반응형
Queue란?
선입선출(First In First Out, FIFO)의 자료 구조
▶ 큐(Queue)는 한쪽에서 삽입(Push, Enqueue) 하며, 다른 한쪽에서 빠져나오는(Pop, Dequeue) 구조
두 지점을 <Head> 와 <Tail>로 표현한다. (Front, Rear)
예제
- 티켓 구매를 위해서 대기표를 뽑아서 번호순 대로 처리
- 대중교통을 줄 서서 대기하다가 앞 사람부터 들어가는 행위
- BFS (Breadth-First Search, 너비 우선 탐색)
ex. 프린터 인쇄 대기열
- 작업 스케줄러 및 프로세스 관리
구현
#include <stdio.h>
struct Queue {
int fr = 0;
int re = 0;
int arr[10];
void push(int data)
{
arr[re++] = data;
}
int pop()
{
return arr[fr++];
}
int size()
{
return re - fr;
}
}queue;
int main()
{
int data[] = { 3, 2, 5, 4, 1 };
for (int i = 0; i < 5; ++i)
{
queue.push(data[i]);
}
printf("Queue Size: %d\n", queue.size());
for (int i = 0; i < 5; ++i)
{
printf("%d\n", queue.pop());
}
}
구현시 고려사항
- Queue (정적) 크기
→ 연결리스트로 구현하거나 원형 큐(Circular Queue)로 구현할 수도 있다.
- 비어 있는 상태 (Empty)
- 가득 찬 상태 (Full)
- Queue 들어있는 원소 개수
Reference
- [List] 순차 리스트(정적 배열) & 연결 리스트(동적할당) 비교
- [큐] Queue (Memory Pool 방식 구현)
- BFS (Breadth-First Search, 너비 우선 탐색)
관련 문제
반응형
'자료구조' 카테고리의 다른 글
[해시] Hash란? (2) | 2021.04.30 |
---|---|
[큐] 원형 큐 (Circular Queue) (0) | 2021.04.24 |
[스택] Stack 이란? (0) | 2021.04.22 |
우선순위 큐 (Priority Queue) (0) | 2021.03.21 |
힙(Heap) 시뮬레이션 (0) | 2021.02.27 |
댓글