일상생활을 예로 들면 은행에서 먼저 들어온 사람이 먼저 창구나 입장을 하는 것과 같다고 보면 된다.
큐(Queue)의 용도
컴퓨터 버퍼 에서 주로 사용한다.
서비스의 순서를 기다리는 등 대기행렬의 업무처리
운영체제의 작업 스케줄링
큐(Queue)의 특징
큐 선형구조 이다.
FIFO(First In First Out) 선입선출 구조이다.
put(): 자료를 넣을때 수행하는 연산 rear 포인터가 가리킨다.
get(): 자료를 삭제할때 수행하는 연산 front 포인터가 가리킨다.
단점
큐에 빈 메모리가 남아 있어도 꽉 차있는것으로 판단할 수 있다.(rear가 배열의 끝에 도달했을 경우)
-> 이를 개선한 원형 큐가 나옴
원형 큐는 메모리 공간은 잘 활용하나 배열로 구현되어 있기 때문에 큐의 크기가 제한된다.
-> 이를 개선한 링크드 리스트로 큐가 나옴
링크드 리스트로 구현한 큐는 큐의 크기가 제한이 없고 삽입, 삭제가 편리하다.
큐(Queue)의 성질
FIFO(First In First Out)
원소의 추가가 O(1)
원소의 제거가 O(1)
제일 앞/뒤의 원소 확인이 O(1)
제일 앞/뒤가 아닌 나머지 원소들의 확인/변경이 원칙적으로 불가능
선형구조 의 자료구조이다.
큐(Queue)의 알고리즘 예시
C 언어를 이용한 Queue 구현
Java 언어를 이용한 Queue 구현
C++ 배열을 이용한 큐 구현
// #include <bits/stdc++.h>#include <iostream>
usingnamespacestd;#define ll long long
constintmx=1000005;intdat[mx];inthead=0,tail=0;voidpush(intx){dat[tail++]=x;}voidpop(){head++;}intfront(){returndat[head];}intback(){returndat[tail-1];}intmain(){cin.tie(nullptr);ios::sync_with_stdio(false);push(1);push(2);push(3);cout<<front();return0;}