한쪽 끝에서만 원소를 넣거나 뺄 수 있는 자료구조
- LIFO(Last-In, First-Out), FILO(First-In, Last-Out)
- 가장 나중에 쌓은 데이터를 가장 먼저 빼낸다.
- 데이터를 한쪽 끝에서만 넣거나 뺄 수 있다.
cf)
push : 스택에 데이터를 넣는 행위
pop : 스택에서 데이터를 빼는 행위
- 원소의 추가/제거 O(1)
- 제일 상단 원소의 검색 O(1)
- 제일 상단이 아닌 나머지 원소들의 검색/추가/제거가 원칙적으로 불가능하다.
장점
- 구조가 단순하다.
- 데이터의 저장/읽기 속도가 빠르다.
단점
- 데이터의 최대 개수를 미리 정해야 한다.
- 최대 개수를 미리 정해놓아야 하니, 저장 공간의 낭비가 발생할 수 있다.
import java.util.Stack;
Stack<Integer> stackInt = new Stack<Integer>();
데이터 추가
stackInt.push(1); // [1] stackInt.push(2); // [1, 2] stackInt.push(3); // [1, 2, 3]
데이터 삭제
stackInt.pop(); // [1, 2] stackInt.pop(); // [1] stackInt.pop(); // []