[ 자료구조 ] Stack
스택(Stack)은 "쌓다"라는 의미로, 데이터를 차곡차곡 쌓아 올린 형태의 자료구조.
데이터가 순서대로 쌓이며 가장 마지막에 삽입된 자료가 가장 먼저 삭제되는 구조.
스택은 정해진 방향으로만 쌓을 수 있으며, top으로 정한 곳을 통해서만 접근할 수 있다.
새로 삽입되는 자료는 top이 가리키는 가장 맨 위에 쌓이게 되며, 자료를 삭제할 때도 top을 통해서 삭제가 가능하다.
스택의 구조를 후입 선출의 구조라고 하며, 줄여서 LIFO(Last In First Out)라고 부른다.
[ 스택의 특징 ]
재귀 함수의 동작 흐름과 같은 구조를 가진다.
깊이 우선 탐색에 사용된다.
단방향 입출력 구조이다.
데이터를 하나씩만 넣고 뺄 수 있다.
[ 스택 연산 ]
* push() : 저장소에 자료를 저장한다.
* pop() : 저장소에서 자료를 꺼낸다. 꺼낸 자료는 삽입한 자료의 역순으로 꺼낸다.
* isEmpty() : 스택이 공백인지 아닌지 확인.
* peek() : 스택의 top에 있는 item을 반환하는 연산.
* isFull() : 스택이 가득 차 있으면 참, 아니면 거짓을 반환.
* size() : 스택내의 모든 요소들의 개수를 반환.
* contains() : 스택내의 요소중에 해당값이 포함되어 있는지 확인.
* search() : 메서드의 인자를 스택에서 검색하여 해당 위치를 반환. 인자가 여러개일 경우 마지막 위치를 반환.
여기서 위치는 인덱스가 아닌 빠져 나오는 순서를 의미한다. 찾는 값이 스택에 없을 경우 -1을 반환.
* display() : 스택내의 모든 요소들을 출력.
[ Stack 선언 ]
import java.util.Stack; //import
Stack<Integer> stack = new Stack<>(); //int형 스택 선언
Stack<String> stack = new Stack<>(); //char형 스택 선언