프로그래밍/JAVA
[JAVA] 스택(Stack)
으노로
2023. 2. 28. 01:19
안녕하세요.
오늘은 자바의 클래스 중에 Stack을 공부해보겠습니다.
Stack의 개념
스택(Stack)은 자료 구조중에 하나로 사전적으로는 '쌓다', '채우다', '더미'를 뜻합니다.
사전적 의미처럼 데이터가 입력한 순서대로 쌓이게 되고 나중에 입력된 데이터부터 나오게 됩니다.
후입선출(後入先出) / LIFO(Last In First Out)의 특징을 가지고 있으며 이러한 특징으로 인해 데이터에 접근 방법은 한쪽 끝에서만 이루어지기 때문에 선형 구조를 띄고 있습니다.
Stack의 특징
- 데이터가 입력한 순서대로 쌓이고 나중에 입력된 데이터부터 나오는 LIFO(Last In First Out) 구조
- 데이터 접근이 목록 끝에서만 이루어지는 선형 구조
- 데이터의 접근이 제한적인 나열 구조
- 인터럽트처리, 수식의 계산, 서브루틴의 복귀 번지 저장 등에 쓰임
- 그래프의 깊이 우선 탐색(DFS)에서 사용
- 재귀적(Recursion) 함수를 호출할 때 사용
Stack의 사용
자바에서 Stack을 사용하기 위해서 java.util.Stack을 import 한 뒤에 Stack을 선언합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
import java.util.Stack;
// 선언 - Stack<Element> stack = new Stack<>();
Stack<Integer> stack = new Stack<>();
// 데이터 추가 - push()
stack.push(1);
stack.push(2);
stack.push(3);
// 데이터 삭체 - pop()
stack.pop();
// 데이터 전체 삭제
stack.clear();
// 데이터 최상단 값 - peak()
stack.peak();
// Stack 크기 - size()
stack.size();
// Stack 빈 상태 확인 - empty()
stack.empty();
// 데이터 여부 확인 - contains()
stack.contains(2);
|
그림과 같이 데이터가 입력된 순서대로 쌓이게 되고 가장 나중에 들어간 값부터 제거할 수 있습니다.
- push() : 데이터를 삽입할 수 있습니다.
- pop() : 가장 나중에 들어간 값부터 제거할 수 있습니다.
- clear() : 모든 데이터를 제거할 수 있습니다.
- peak() : 가장 나중에 들어간 데이터를 가져올 수 있습니다.
- size() : Stack의 크기를 확인할 수 있습니다.
- empty() : Stack이 빈 상태인지 확인할 수 있습니다.(비어있다면 true, 값이 있다면 false)
- contains() : 해당 값이 Stack에 있는지 확인할 수 있습니다.(있다면 true, 없다면 false)
마무리 정리
이상으로 Stack에 대해 공부하였습니다.
감사합니다.