Computer Engineering/컴퓨터 과학(CS: Computer Science)

[CS] 스택(Stack)이란 무엇인가?

잇트루 2022. 10. 12. 02:00
반응형

스택(Stack)

스택은 ‘쌓다.’, ‘쌓이다.’와 같은 뜻을 가진 용어로, 접시를 높이 쌓아 놓은 형태와 비슷한 자료구조이다. 즉, 데이터를 순서대로 쌓는 자료구조이다.

실생활에서 흔히 접할 수 있는 스택은 프링글스와 같은 원통에 들어가 있는 과자를 떠올리면 이해하기 쉽다. 가장 위에 있는(가장 나중에 들어간) 과자를 먼저 꺼내어 먹는 구조이기 때문이다.

 

스택은 가장 나중에 들어온 데이터가 가장 먼저 빠져나가는 후입 선출(LIFO : Last In First Out) 구조로 되어 있어, 프로그래밍에서 데이터가 입력된 순서대로 처리되는 것이 아닌, 가장 나중에 들어온 데이터를 먼저 처리할 때 사용한다.

 

스택의 특징

후입선출 (LIFO : Last In First Out)

먼저 들어간 데이터는 나중에 나오는 구조를 가지고 있다. 자바 언어에서 표현하는 스택은 다음과 같다.

// 스택 선언
Stack<Integer> stackEx = new Stack<>();

// 스택에 데이터 삽입
stackEx.push(1);
stackEx.push(2);
stackEx.push(3);
stackEx.push(4);
stackEx.push(5);
// 1, 2, 3, 4, 5 순으로 저장된다.

// 스택에서 데이터 꺼내기
stackEx.pop();
stackEx.pop();
stackEx.pop();
stackEx.pop();
stackEx.pop();

// 5, 4, 3, 2, 1 순으로 나온다.

 

데이터는 하나씩 넣고 뺄 수 있다.

스택 자료구조는 데이터가 아무리 많이 있어도 데이터를 하나씩 넣고 뺄 수 있다. 한 번에 여러 데이터를 넣거나 뺄 수 없다.

 

하나의 입출력 방향을 가지고 있다.

스택 자료구조는 데이터의 입출력 방향이 같다. 즉, 들어오는 방향과 나가는 방향이 같다는 것이다.

반응형