자료구조

Stack 스택

코딩개발 2023. 7. 26. 16:12
728x90
반응형

Stack

1. LIFO(Last In First Out))
2. 그래프 깊이 우선 탐색(DFS)에서 사용

3. 재귀적(Recursion) 함수 호출 할 때 사용


import java.util.Stack;

Stack<Integer> stack = new Stack<>();	//int형 stack 선언
Stack<String> stack = new Stack<>();	//char형 stack 선언

 


Stack 추가

Stack<Integer> stack = new Stack<>();
stack.push(1);    // stack에 값 1 추가

 


Stack 삭제

stack.pop();    // stack에 값 제거
stack.clear();   // stack의 전체 값 제거 (초기화)

 

 

 

stack.peek();     // 값을 빼지 않고 가장 상단 값 확인
stack.size();      // stack 사이즈
stack.empty();   // stack이 비어있다면 true
stack.search(4);    // stack에서 4 검색(있으면 index 반환, 없으면 -1 반환)
stack.contains(1);  // stack에 1이 있다면 true

 

 

(참고)

search()의 경우 index가 1부터 시작하며 마지막에 push된 값의 index값이 1이다.

import java.util.Stack;

public class Main {
	public static void main(String[] args) {
		Stack<Integer> s = new Stack<>();
		s.push(1);
		s.push(2);
		s.push(3);
		s.push(4);
		s.push(5);
		System.out.println(s.search(4)); // 2
	}
}

위 코드를 실행하면 아래 그림과 같은 스택이 만들어진다.

마지막에 push()한 5의 index값이 1이 되어 아래 표와 같은 결과가 나오게 되며

s.search(4)의 결과는 index값이 2로 출력된다.

stack 값 index 값
5 1
4 2
3 3
2 4
1 5

<참고>
https://coding-factory.tistory.com/601

728x90
반응형