지난 글: [알고리즘] - 스택
큐(Queue)는 데이터 구조의 하나로, 여태 배운 것들과 마찬가지로 데이터를 1열로 나열한 구조이다. 스택과 비슷하지만 큐는 추가하는 측과 삭제하는 측이 반대이다. 큐는 '대기 행렬'이라고 불린다.
1
큐에 데이터를 추가하면 가장 위에 추가된다. 현재 'Blue'라는 데이터만 큐에 저장돼 있다.
2
'Green'이라는 데이터를 추가한다. 큐에 데이터를 추가하는 작업을 '인큐(enqueue)'라고 하며, 추가된 데이터는 기존에 있던 'Blue' 데이터 위에 쌓인다.
3
다시 'Red' 데이터를 인큐한다.
4
큐에서 데이터를 꺼낼 때는 가장 아래, 즉 가장 오래된 데이터부터 꺼낸다. 여기서는 'Blue'가 추출된다. 큐에서 데이터를 꺼내는 작업을 '디큐(dequeue)'라고 한다.
5
다시 디큐를 하면 'Green'이 추출된다.
큐와 같이 먼저 넣은 것을 꺼내는 선입선출 구조를 'First In First Out'이라 하며, 앞글자만 따 'FIFO'라고도 한다. 스택과 마찬가지로 데이터를 조작할 수 있는 위치가 정해져 있지만, 스택과는 추가하는 쪽과 삭제하는 쪽이 반대이다. 스택과 마찬가지로 중간에 있는 데이터는 접근할 수 없고, 필요한 데이터가 나올때까지 디큐를 해야한다.
참고 서적: