C언어 큐 (Queue) - FIFO 자료구조
코딩C언어
읽는데 4분 소요
처음 쓰여진 날: 2026-02-03
마지막 수정일: 2026-02-03
조회수: 8
요약
C언어 큐(Queue)의 개념과 FIFO 원리를 알아봅니다. 선형 큐의 구조, enqueue/dequeue 연산, 그리고 선형 큐의 한계점을 이해하면 원형 큐를 쉽게 이해할 수 있습니다.
큐 핵심 정리
| 개념 | 설명 | 예시 |
|---|---|---|
| 큐(Queue) | 먼저 들어온 데이터가 먼저 나가는 자료구조 | 대기열, 줄 서기 |
| FIFO | First In First Out (선입선출) | 먼저 온 사람이 먼저 서비스 |
| enqueue | 큐에 데이터 삽입 (rear에 추가) | enq(&q, 10); |
| dequeue | 큐에서 데이터 삭제 (front에서 제거) | deq(&q); |
큐란?
큐(Queue) 는 먼저 들어온 데이터가 먼저 나가는 자료구조입니다. 이를 FIFO(First In First Out) 라고 합니다.
실생활에서 줄 서기와 같습니다. 먼저 줄을 선 사람이 먼저 서비스를 받습니다.

큐 vs 스택 비교
| 구분 | 큐 (Queue) | 스택 (Stack) |
|---|---|---|
| 원리 | FIFO (선입선출) | LIFO (후입선출) |
| 삽입 위치 | rear (뒤) | top (위) |
| 삭제 위치 | front (앞) | top (위) |
| 예시 | 대기열, 프린터 작업 | 접시 쌓기, 뒤로가기 |
선형 큐의 구조
선형 큐는 배열을 사용하여 큐를 구현한 것입니다. typedef를 사용하면 struct 키워드 없이 간결하게 사용할 수 있습니다.
c
코드 하이라이팅 중...
| 포인터 | 역할 | 초기값 |
|---|---|---|
front | 삭제할 위치 (맨 앞 요소) | 0 |
rear | 다음 삽입할 위치 (맨 뒤 다음 칸) | 0 |
front == rear이면 큐가 비어있는 상태입니다.
enqueue (삽입)
enqueue는 큐의 rear 위치에 데이터를 삽입하고, rear를 1 증가시킵니다.
c
코드 하이라이팅 중...

삽입 예시
c
코드 하이라이팅 중...
| 동작 | data[0] | data[1] | data[2] | front | rear |
|---|---|---|---|---|---|
| 초기 | 0 | 0 | 0 | 0 | 0 |
| enqueue(10) | 10 | 0 | 0 | 0 | 1 |
| enqueue(20) | 10 | 20 | 0 | 0 | 2 |
| enqueue(30) | 10 | 20 | 30 | 0 | 3 |
dequeue (삭제)
dequeue는 큐의 front 위치에서 데이터를 꺼내고, front를 1 증가시킵니다.
c
코드 하이라이팅 중...

삭제 예시
c
코드 하이라이팅 중...
| 동작 | 반환값 | data[0] | data[1] | data[2] | front | rear |
|---|---|---|---|---|---|---|
| 이전 | - | 10 | 20 | 30 | 0 | 3 |
| dequeue() | 10 | 10 | 20 | 30 | 1 | 3 |
| dequeue() | 20 | 10 | 20 | 30 | 2 | 3 |
삭제해도 배열의 값은 그대로 남아있습니다. front가 이동하므로 더 이상 접근하지 않을 뿐입니다. 왜 값을 실제로 지우지 않나요?
선형 큐의 한계
선형 큐는 앞쪽 공간을 재사용할 수 없다는 문제가 있습니다.
c
코드 하이라이팅 중...

선형 큐의 공간 낭비
dequeue로 앞쪽이 비어도 그 공간을 재사용할 수 없습니다. 이 문제를 해결한 것이 원형 큐(Circular Queue)입니다.
다음 단계
선형 큐의 공간 낭비 문제를 해결한 원형 큐(Circular Queue)를 학습하세요. 모듈러 연산(% SIZE)을 사용해서 배열의 끝과 처음을 연결합니다.