가장 최근에 들어온 데이터를 가장 먼저 출력하는 자료구조.
가장 최근에 들어왔던 데이터를 필요로 하는 기능에 사용하는 자료구조로 우리가 자주 사용하는 Ctrl + Z 나 웹 페이지의 뒤로가기 등을 예로 들 수 있다.
스택의 연산은 3가지로 다음과 같다.
1. push : 데이터 삽입
2. pop : 가장 최근 데이터를 추출 -> 스택에서 삭제됨.
3. peek : 가장 최근 데이터를 반환 -> 스택에서 삭제되지 않음
단, 가장 최근의 값 이전의 값들을 가져오려면 그만큼 까다로운 것이 단점이다.
다음과 같이 a > b > c > d > e 순으로 push 를 한 상태에서 a 값을 가져오려 한다면

pop 을 5번 해야 원하는 값인 a 를 가져올 수 있으며 이전에 저장된 값들은 삭제된다.
따라서 주 목적이 가장 최근의 값을 가져오는 것이 아니라면 이전 인덱스에 있는 값들도 필요하다면 같은 횟수의 연산으로 처리가 가능한 단순 배열이나 리스트를 사용하는 것이 더 효율적이다.
참고로 프로세스가 CPU 에게 할당 받는 메모리 영역 스택이 가장 원초적인 스택 자료구조의 예시라고 볼 수 있다.
현재에는 개발 환경 또한 발전하여 할당 받은 (혹은 설정되어있는) 크기를 넘어가면 알아서 프로세스를 멈춰 메모리 침범을 방지하지만 과거에는 아래 그림처럼 스택이 가득찬 상태에서 push 하게 되면 다른 메모리를 침범하면서 데이터를 넣는 오류가 발생하기도 했으며 이를 스택 오버플로우(버퍼 오버플로우라고도 한다)라 한다.

'컴퓨터 공학 > 자료구조' 카테고리의 다른 글
| 자료구조 - 그래프 (0) | 2023.01.15 |
|---|---|
| 자료구조 - 리스트 (0) | 2023.01.15 |
| 자료구조 - 덱(Deque) (0) | 2023.01.14 |
| 자료구조 - 큐(Queue) (0) | 2023.01.14 |
| 자료구조 개요 (0) | 2023.01.14 |