C언어 스택 (Stack) - LIFO 자료구조

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

요약

C언어 스택(Stack)의 개념과 LIFO 원리를 알아봅니다. push/pop 연산, top 포인터, 배열 기반 스택 구현을 이해하면 정보처리기사 실기 스택 문제를 쉽게 풀 수 있습니다.

스택 핵심 정리

개념설명예시
스택(Stack)나중에 들어온 데이터가 먼저 나가는 자료구조접시 쌓기, 뒤로가기
LIFOLast In First Out (후입선출)마지막에 넣은 게 먼저 나옴
push스택에 데이터 삽입 (top 위에 추가)push(5);
pop스택에서 데이터 삭제 (top에서 꺼냄)pop();
top스택의 맨 위 데이터 위치초기값은 -1 (비어있음)

스택이란?

스택(Stack)나중에 들어온 데이터가 먼저 나가는 자료구조입니다. 이를 LIFO(Last In First Out) 라고 합니다.

실생활에서 접시 쌓기와 같습니다. 접시를 쌓으면 맨 위에 올리고, 꺼낼 때도 맨 위에서 꺼냅니다.

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

스택 vs 큐 비교

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

배열 기반 스택 구현

스택은 배열top 변수 하나로 구현할 수 있습니다.

c
코드 하이라이팅 중...
변수역할초기값
stack[]데이터를 저장하는 배열모두 0
top맨 위 데이터의 인덱스-1 (비어있음)


push (삽입)

push는 스택의 top을 1 증가시킨 후, 그 위치에 데이터를 저장합니다.

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

++top의 의미

++top전위 증가입니다. 먼저 top을 1 증가시키고, 증가된 값을 인덱스로 사용합니다.

단계설명예시 (top이 -1일 때)
1. top 증가++top 실행top: -1 -> 0
2. 값 저장stack[top] = numstack[0] = 5

push 예시

c
코드 하이라이팅 중...
동작stack[0]stack[1]stack[2]top
초기000-1
push(5)5000
push(2)5201
push(7)5272

pop (삭제)

pop은 스택의 top 위치의 데이터를 반환하고, top을 1 감소시킵니다.

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

top--의 의미

top--후위 감소입니다. 현재 top 값을 먼저 사용한 후, top을 1 감소시킵니다.

단계설명예시 (top이 2일 때)
1. 값 반환stack[top] 반환stack[2] 반환
2. top 감소top-- 실행top: 2 -> 1

pop 예시

c
코드 하이라이팅 중...
동작반환값stack[0]stack[1]stack[2]top
이전-5272
pop()75271
pop()25270

isEmpty와 isFull

스택이 비어있는지, 가득 찼는지 확인하는 함수입니다.

c
코드 하이라이팅 중...
함수조건반환값
isEmpty()top == -11 (비어있음)
isFull()top == MAX_SIZE - 11 (가득 참)
text
코드 하이라이팅 중...

실기 문제에서의 스택

실기 문제에서는 push/pop 함수의 이름이 다를 수 있습니다. 함수의 동작을 보고 push인지 pop인지 판단해야 합니다.

함수 이름이 다른 경우

문제의 함수명실제 동작판단 기준
into(num)push++top으로 증가 후 값 저장
take()poptop--로 값 반환 후 감소
enqueue(num)pushtop에 데이터 추가
dequeue()poptop에서 데이터 꺼냄

문제 풀이 순서

  1. 자료구조 파악: push/pop 함수를 찾아 스택인지 확인
  2. 초기 상태 확인: top(또는 point)의 초기값 확인
  3. 표 작성: 배열과 top 상태를 단계별로 추적
  4. 출력 순서 기록: printf가 나올 때마다 출력값 기록

정보처리기사 실기 대비 문제