스택(Stack)

SOOBIN·2021년 4월 1일

자료구조

목록 보기
2/2

스택이란?


  • 스택은 한 쪽 끝에서만 자료를 넣거나 뺄 수 있는 선형 구조(LIFO - Last In First Out)으로 되어 있다.
  • peek(): 스택의 가장 위에 있는 항목을 반환한다.
  • isEmpty(): 스택이 비어 있을 때에 true를 반환한다.
  • push(): 요소element를 넣는 것
  • pop(): 요소element를 빼는 것
  • 가장 늦게 들어온 자료가 먼저 빠저나가는 특징을 가지고있다.
    * ex) a b c d 순으로 push()했다면, d c b a 순으로 pop()한다.

스택 구조

스택의 구현


스택은 배열이나 연결리스트로 구현할 수 잇다.

  • 배열로 구현할 경우에는 간단한 장점을 가지고 있으나, 스택의 크기가 고정 돼 정보의 수가 많을 때 좋지 않다는 단점을 가지고 있다.
  • 연결리스트는 구현이 복잡한 반면, 스택의 크기를 필요에 따라 가변적으로 변경할 수 있다.

(나는 아직 연결리스트를 모르기 때문에 배열 구현위주로 볼 예정)

#include <stdio.h>
#include <stdlib.h>

int top = -1; // 아무것도 들어있지 않은 상태
int stack[5];
 
void push(int num) {
	if (top == 4) {
		printf("스택이 가득 찼습니다.");
		return;
	}
	else {
		top++;
		stack[top] = num; 
	}
}
int pop() {
	if (top == -1) {
		printf("스택에 요소가 없습니다.");
		return; 
	}
	else {
		return stack[top--];
	}
}
int main() {
	push(3);
	push(2);
	push(1);
	printf("%d\n", pop());
	printf("%d\n", pop());
	printf("%d\n", pop());

	return 0;
}

0개의 댓글