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

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

요약

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

큐 핵심 정리

개념설명예시
큐(Queue)먼저 들어온 데이터가 먼저 나가는 자료구조대기열, 줄 서기
FIFOFirst In First Out (선입선출)먼저 온 사람이 먼저 서비스
enqueue큐에 데이터 삽입 (rear에 추가)enq(&q, 10);
dequeue큐에서 데이터 삭제 (front에서 제거)deq(&q);
front다음에 꺼낼 위치를 가리키는 정수초기값 0
rear다음에 넣을 위치를 가리키는 정수초기값 0

큐란? 쌩기초

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

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

큐는 두 개의 위치를 기억합니다. front(앞쪽, 데이터를 꺼내는 곳)와 rear(뒤쪽, 데이터를 넣는 곳)입니다. 두 위치 모두 배열의 인덱스를 저장하는 정수값입니다.

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

큐 vs 스택 비교

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

선형 큐의 구조 기초

선형 큐배열을 사용하여 큐를 구현한 것입니다.

아래 코드에서 사용되는 C 문법을 간단히 정리하면:

c
코드 하이라이팅 중...

Queue q = {{0}, 0, 0};에서 첫 번째 {0}은 배열 data의 모든 요소를 0으로 초기화하고, 나머지 두 0frontrear를 각각 0으로 설정합니다. 구조체 초기화와 같은 방식입니다.

위치 표시역할초기값
front삭제할 위치 (맨 앞 요소)0
rear다음 삽입할 위치 (맨 뒤 다음 칸)0


enqueue (삽입) 기초

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

c
코드 하이라이팅 중...

Queue* q는 큐 구조체포인터입니다. q->data는 포인터로 구조체 멤버에 접근하는 문법으로, (*q).data와 같은 의미입니다.

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


선형 큐의 한계 심화

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

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

다음 단계

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

관련 글

(34개)
제목태그시험
C언어 구조체 배열
C언어
-
C언어 구조체 포인터
C언어
-
C언어 함수 프로토타입
C언어
-