티스토리 뷰

Java+Spring/Java

[Java]자료구조 - Stack

Vagabund.Gni 2022. 7. 25. 21:48
728x90
반응형

Stack은 더미, 퇴적, 쌓다 등의 의미를 지니고 있다.

 

하노이의 탑 퍼즐에서 기둥에 원판을 꽂듯이 데이터를 쌓는 구조라고 할 수 있는데,

 

Stack(스택)의 가장 큰 특징은 바로 이 퍼즐과 같이 후입 선출(LIFO - Last In First Out)로 동작한다는 것이다.

 

설명을 추가로 덧붙이자면 스택 자료구조는 반드시 데이터를 하나씩만 넣고 뺄 수 있고,

 

그림에서 보이는 것과 같이 단 하나의 입출력 방향을 가지고 있다.

 

브라우저의 앞으로 가기나 뒤로 가기 기능을 구현할 때 사용되는 스택 자료구조는 간단하게 사용 가능하다.

import java.util.Stack; // import

Stack<Integer> stack = new Stack<>(); // Integer형 스택 선언

위와 같이 먼저 Stack 클래스를 import 한 후 매개변수의 타입에 맞춰 선언해주면 된다.

 

아래에서는 스택 클래스에서 자주 사용되는 메서드를 정리한다.

 

 

push()

 

push()는 스택에 값을 추가하고 싶을 때 사용한다.

stack.push(1);	// stack에 1 추가
stack.push(2);	// stack에 2 추가
stack.push(3);	// stack에 3 추가

위와 같이 숫자를 추가하면, 위의 하노이 탑 퍼즐처럼 아래부터 1, 2, 3이 순서대로 쌓인다.

 

꺼낼 때는 당연히 반대 순서로만 진행된다.

 

 

pop(), clear()

 

pop()은 스택에서 값을 제거하고 싶을 때 사용한다.

 

주의사항은 push를 이용해 값이 추가된 순서와 반대로,

 

그러니까 마지막에 추가된 값이 가장 먼저 제거된다는 점이다.

 

스택을 완전히 비우고 싶은 경우엔 clear()를 사용한다.

stack.push(1);	// stack에 1 추가
stack.push(2);	// stack에 2 추가
stack.push(3);	// stack에 3 추가

stack.pop();	// stack에서 3 제거

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

 

peek()

 

현재 스택의 최상단 값(가장 나중에 추가된 값)을 확인만 하고 싶은 경우에 사용한다.

stack.push(1);	// stack에 1 추가
stack.push(2);	// stack에 2 추가
stack.push(3);	// stack에 3 추가

stack.pop();	// stack에서 3 제거

System.out.println(stack.peek());	// 2 출력

 

size()

 

현재 스택의 크기를 출력하고 싶을 때 사용한다.

stack.push(1);	// stack에 1 추가
stack.push(2);	// stack에 2 추가
stack.push(3);	// stack에 3 추가

System.out.println(stack.size());	// 3 출력

 

empty()

 

현재 스택이 비어있는지 여부를 확인할 때 사용한다.

stack.push(1);	// stack에 1 추가
stack.push(2);	// stack에 2 추가
stack.push(3);	// stack에 3 추가

System.out.println(stack.empty());	// false 출력

 

contains()

 

현재 스택에 특정 요소가 포함되어 있는지 체크할 때 사용한다.

stack.push(1);	// stack에 1 추가
stack.push(2);	// stack에 2 추가
stack.push(3);	// stack에 3 추가

System.out.println(stack.contains(2));	// true 출력
System.out.println(stack.contains(4));	// false 출력
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
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
28 29 30 31
글 보관함