프로그래밍/JAVA

[JAVA] 스택(Stack)

으노로 2023. 2. 28. 01:19

안녕하세요.

오늘은 자바의 클래스 중에 Stack을 공부해보겠습니다.

 

Stack의 개념

스택(Stack)은 자료 구조중에 하나로 사전적으로는 '쌓다', '채우다', '더미'를 뜻합니다.

사전적 의미처럼 데이터가 입력한 순서대로 쌓이게 되고 나중에 입력된 데이터부터 나오게 됩니다.

후입선출(後入先出) / LIFO(Last In First Out)의 특징을 가지고 있으며 이러한 특징으로 인해 데이터에 접근 방법은 한쪽 끝에서만 이루어지기 때문에 선형 구조를 띄고 있습니다.

 

Stack의 특징

  1. 데이터가 입력한 순서대로 쌓이고 나중에 입력된 데이터부터 나오는 LIFO(Last In First Out) 구조
  2. 데이터 접근이 목록 끝에서만 이루어지는 선형 구조
  3. 데이터의 접근이 제한적인 나열 구조
  4. 인터럽트처리, 수식의 계산, 서브루틴의 복귀 번지 저장 등에 쓰임
  5. 그래프의 깊이 우선 탐색(DFS)에서 사용
  6. 재귀적(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);

출처 :&nbsp;https://coding-factory.tistory.com/601

그림과 같이 데이터가 입력된 순서대로 쌓이게 되고 가장 나중에 들어간 값부터 제거할 수 있습니다.

  • push() : 데이터를 삽입할 수 있습니다.
  • pop() : 가장 나중에 들어간 값부터 제거할 수 있습니다.
  • clear() : 모든 데이터를 제거할 수 있습니다.
  • peak() : 가장 나중에 들어간 데이터를 가져올 수 있습니다.
  • size() : Stack의 크기를 확인할 수 있습니다.
  • empty() : Stack이 빈 상태인지 확인할 수 있습니다.(비어있다면 true, 값이 있다면 false)
  • contains() : 해당 값이 Stack에 있는지 확인할 수 있습니다.(있다면 true, 없다면 false)

 

마무리 정리

이상으로 Stack에 대해 공부하였습니다.

감사합니다.

 

참조 : https://coding-factory.tistory.com/601

참조 : https://ko.wikipedia.org/wiki/%EC%8A%A4%ED%83%9D