C언어 큐 (Queue) - FIFO 자료구조

코딩C언어
읽는데 4분 소요
처음 쓰여진 날: 2026-02-03
마지막 수정일: 2026-02-03
조회수: 8

요약

C언어 큐(Queue)의 개념과 FIFO 원리를 알아봅니다. 선형 큐의 구조, enqueue/dequeue 연산, 그리고 선형 큐의 한계점을 이해하면 원형 큐를 쉽게 이해할 수 있습니다.

큐 핵심 정리

개념설명예시
큐(Queue)먼저 들어온 데이터가 먼저 나가는 자료구조대기열, 줄 서기
FIFOFirst In First Out (선입선출)먼저 온 사람이 먼저 서비스
enqueue큐에 데이터 삽입 (rear에 추가)enq(&q, 10);
dequeue큐에서 데이터 삭제 (front에서 제거)deq(&q);

큐란?

큐(Queue)먼저 들어온 데이터가 먼저 나가는 자료구조입니다. 이를 FIFO(First In First Out) 라고 합니다.

실생활에서 줄 서기와 같습니다. 먼저 줄을 선 사람이 먼저 서비스를 받습니다.

큐 개념
큐는 뒤(rear)에서 들어가고 앞(front)에서 나갑니다. 먼저 들어온 데이터가 먼저 나가는 FIFO 구조입니다.

큐 vs 스택 비교

구분큐 (Queue)스택 (Stack)
원리FIFO (선입선출)LIFO (후입선출)
삽입 위치rear (뒤)top (위)
삭제 위치front (앞)top (위)
예시대기열, 프린터 작업접시 쌓기, 뒤로가기

선형 큐의 구조

선형 큐배열을 사용하여 큐를 구현한 것입니다. typedef를 사용하면 struct 키워드 없이 간결하게 사용할 수 있습니다.

c
코드 하이라이팅 중...
포인터역할초기값
front삭제할 위치 (맨 앞 요소)0
rear다음 삽입할 위치 (맨 뒤 다음 칸)0

front == rear이면 큐가 비어있는 상태입니다.



enqueue (삽입)

enqueue는 큐의 rear 위치에 데이터를 삽입하고, rear를 1 증가시킵니다.

c
코드 하이라이팅 중...
enqueue 동작
enqueue: rear 위치에 값을 저장하고, rear를 1 증가시킵니다.

삽입 예시

c
코드 하이라이팅 중...
동작data[0]data[1]data[2]frontrear
초기00000
enqueue(10)100001
enqueue(20)1020002
enqueue(30)10203003

dequeue (삭제)

dequeue는 큐의 front 위치에서 데이터를 꺼내고, front를 1 증가시킵니다.

c
코드 하이라이팅 중...
dequeue 동작
dequeue: front 위치의 값을 반환하고, front를 1 증가시킵니다.

삭제 예시

c
코드 하이라이팅 중...
동작반환값data[0]data[1]data[2]frontrear
이전-10203003
dequeue()1010203013
dequeue()2010203023

삭제해도 배열의 값은 그대로 남아있습니다. front가 이동하므로 더 이상 접근하지 않을 뿐입니다. 왜 값을 실제로 지우지 않나요?


선형 큐의 한계

선형 큐는 앞쪽 공간을 재사용할 수 없다는 문제가 있습니다.

c
코드 하이라이팅 중...
선형 큐의 한계
앞쪽에 빈 공간이 있어도 rear가 끝에 도달하면 더 이상 삽입할 수 없습니다.

다음 단계

선형 큐의 공간 낭비 문제를 해결한 원형 큐(Circular Queue)를 학습하세요. 모듈러 연산(% SIZE)을 사용해서 배열의 끝과 처음을 연결합니다.