정처기 감자정처기 감자
C언어자료구조

검색

검색어를 입력해 개념, 문제, 필기를 찾습니다.

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

코딩C언어
읽는데 5분 소요
처음 쓰인 날: 2026-02-03
마지막 수정일: 2026-03-21
조회수: —
선수학습(1개)
  • C언어 스택 (Stack) - LIFO 자료구조

요약

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 문법을 간단히 정리하면:

  • #define SIZE 5: 코드에서 SIZE를 모두 5로 치환하는 매크로 상수
  • typedef struct: 구조체에 별칭을 붙여 struct 키워드 없이 사용
c
코드 하이라이팅 중…

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

위치 표시역할초기값
front삭제할 위치 (맨 앞 요소)0
rear다음 삽입할 위치 (맨 뒤 다음 칸)0
front와 rear는 C의 포인터가 아닙니다
front와 rear는 배열에서 '몇 번째 칸인지'를 나타내는 정수(인덱스)입니다. 함수에 등장하는 Queue* q의 포인터와는 다른 개념입니다.
front == rear이면 큐가 비어있는 상태입니다
front와 rear가 같은 위치를 가리키면 꺼낼 데이터가 없다는 뜻입니다. 큐가 비어있는지 확인할 때 이 조건을 사용합니다.

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
삭제해도 배열의 값은 그대로 남아있습니다
front가 이동하므로 더 이상 접근하지 않을 뿐, 실제 배열 값을 0으로 바꾸지는 않습니다. 왜 값을 지우지 않는지 궁금하다면 원형 큐 페이지를 참고하세요.

선형 큐의 한계

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

c
코드 하이라이팅 중…
선형 큐의 한계
앞쪽에 빈 공간이 있어도 rear가 끝에 도달하면 더 이상 삽입할 수 없습니다.
선형 큐의 공간 낭비
dequeue로 앞쪽이 비어도 그 공간을 재사용할 수 없습니다. 이 문제를 해결한 것이 원형 큐(Circular Queue)입니다.

연습 문제

문제를 불러오는 중이에요.
문제를 불러오는 중이에요.

다음 단계

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

메가커피와 함께, 홈페이지 개선에 참여하세요! ☕
혹시 이용에 불편한 점이나 개선이 필요한 부분을 발견하셨나요? 댓글로 알려주시면 더 나은 감자가 될 수 있어요! 🥔 제보해주신 모든 분께 메가커피 기프티콘을 드립니다! (본인 이메일로 댓글 달아주셔야해요~)
후수학습(1개)
  • C언어 원형 큐 (Circular Queue)

관련 글

(41개)
제목태그업데이트시험
C언어 형변환 (Casting)
C언어코딩C언어
2026-05-15-
C언어 연결 리스트 뒤집기 (Reverse Linked List)
C언어코딩C언어
2026-05-06-
C언어 사용자 정의 함수 기초
C언어코딩C언어
2026-05-06-
C언어41개
제목태그업데이트시험
C언어 형변환 (Casting)
C언어코딩C언어
2026-05-15-
C언어 연결 리스트 뒤집기 (Reverse Linked List)
C언어코딩C언어
2026-05-06-
C언어 사용자 정의 함수 기초
C언어코딩C언어
2026-05-06-
C언어 sizeof 연산자
C언어코딩C언어
2026-05-06-
C언어 이진 트리 (Binary Tree)
C언어코딩C언어
2026-04-24-
C언어 중첩 구조체와 포인터 접근
C언어코딩C언어
2026-04-24-
C언어 함수 포인터 (Function Pointer)
C언어코딩C언어
2026-04-24-
배열 C언어 코딩 감자시험
감자시험C언어배열감자시험
2026-03-28응시
C언어 왕감자 정보처리기사 실기 모의 시험
C언어C언어
2026-03-27응시
제어문/반복문 C언어 코딩 감자시험
감자시험C언어제어문반복문
2026-03-28응시
연산자 C언어 코딩 감자시험
감자시험C언어연산자감자시험
2026-03-28응시
포인터 C언어 코딩 감자시험
감자시험C언어포인터감자시험
2026-03-28응시
문자열 C언어 코딩 감자시험
감자시험C언어문자열감자시험
2026-03-28응시
구조체 C언어 코딩 감자시험
감자시험C언어구조체감자시험
2026-03-28응시
C언어 구조체 배열
C언어코딩C언어
2026-03-21-
C언어 구조체 포인터
C언어코딩C언어
2026-04-24-
C언어 함수 프로토타입
C언어코딩C언어
2026-03-21-
C언어 입력 함수 - scanf, getchar, gets
C언어코딩C언어
2026-03-21-
C언어 출력 함수 - putchar, printf, puts
C언어코딩C언어
2026-09-29-
C언어 문자열 포인터 (char *)
C언어코딩C언어
2026-03-21-
C언어 포인터 산술 (Pointer Arithmetic)
C언어코딩C언어
2026-03-21-
C언어 재귀함수 (Recursion)
C언어코딩C언어
2026-03-21-
C언어 선택정렬 (Selection Sort)
C언어코딩C언어
2026-02-10-
C언어 스택 (Stack) - LIFO 자료구조
C언어코딩C언어
2026-03-21-
C언어 2차원 배열
C언어코딩C언어
2026-03-21-
C언어 원형 큐 (Circular Queue)
C언어코딩C언어
2026-03-21-
C언어 ctype.h 문자 판별 함수
C언어코딩C언어
2026-03-21-
C언어 자료형
C언어코딩C언어
2026-05-15-
C언어 이중 포인터 (Double Pointer)
C언어코딩C언어
2026-03-21-
C언어 동적 메모리 할당 (malloc, free)
C언어코딩C언어
2026-05-04-
C언어 헤더 파일과 #include
C언어코딩C언어
2026-03-21-
C언어 연결 리스트 (Linked List)
C언어코딩C언어
2026-05-06-
C언어 포인터 배열과 2차원 배열
C언어코딩C언어
2026-03-24-
C언어 포인터의 기초
C언어코딩C언어
2026-06-25-
C언어 static 변수 - 값이 유지되는 변수
C언어코딩C언어
2026-03-21-
C언어 포인터를 이용한 문자열 복사
C언어코딩C언어
2026-07-09-
C언어 문자열 뒤집기 (포인터 활용)
C언어코딩C언어
2026-03-21-
C언어 구조체
C언어코딩C언어
2026-03-20-
C언어 삼항 연산자
C언어코딩C언어
2026-03-21-
C언어 typedef - 자료형에 새 이름 붙이기
C언어코딩C언어
2026-03-21-
전설의 완전수 문제 - C언어
C언어코딩C언어
2025-09-12-
정처기 감자정처기 감자

정보처리기사 합격
도와줄라고 하는 감자

실기 이론

  • 이론 공부법
  • DB
  • 네트워크/OS
  • SW 설계
  • SW 개발
  • 보안/신기술

시험 응시

  • 시험장 찾기
  • 원서 접수
  • 응시자격 서류

요약 PDF

  • 26년 3회 이론 압축
  • 26년 3회 코딩 압축
  • 초압축 25년 3회
  • 압축 25년 3회

기출문제

  • 전체 기출문제
  • 25년 3회
  • 25년 2회
  • 문제 포럼

감자 이용권

  • 이용권 구매

실기 이론

  • 이론 공부법
  • DB
  • 네트워크/OS
  • SW 설계
  • SW 개발
  • 보안/신기술

시험 응시

  • 시험장 찾기
  • 원서 접수
  • 응시자격 서류

요약 PDF

  • 26년 3회 이론 압축
  • 26년 3회 코딩 압축
  • 초압축 25년 3회
  • 압축 25년 3회

기출문제

  • 전체 기출문제
  • 25년 3회
  • 25년 2회
  • 문제 포럼

감자 이용권

  • 이용권 구매
© 2025 재현기획개발. All rights reserved.
  • 정처기 감자의 시작
  • 업데이트 로그
  • 개인정보 처리방침
  • 이용약관
상호명 : 재현기획개발 / 주소: 서울특별시 영등포구 영등포로 150, 지하1층 108호 L145 가라지(당산동1가, 생각공장 당산) / 대표: 김재현 / 전화: 010-8158-7127 / 통신판매업신고: 제2025-서울영등포-1569호 / 이메일: contact@edugamja.com / 사업자등록번호: 573-51-00999