Stack은 LIFO 구조
로 자주 쓰이는 대표적인 자료구조 입니다.
즉, 마지막에 들어온 애가 먼저 나간다라고 생각하면 됩니다. 스택은 보통 어디에서 쓰일까요?
Ctrl + Z를 할 때 되감기를 하려면 스택 구조로 저장을 하고 있어야 가장 최근꺼로 계속돌아갈 수 있을 것입니다.
재귀함수를 호출하면 함수가 스택구조로 쌓이게 됩니다. 즉, 메모리에서도 스택 구조를 사용하고 있습니다.
후위 표기법으로 표현된 수식을 연산할 때도 사용됩니다.
DFS 깊이 우선탐색에서 사용됩니다.
push(): 원소를 스택에 넣는 메소드입니다.(급식실에서 식판을 쌓는거처럼 마지막에 들어간 게 제일 위에 위치하게 됩니다.)
pop(): 원소를 스택에서 꺼내는 메소드입니다. 즉, 맨 위에 메소드부터 꺼내게 됩니다.
peek(): pop()을 하지 않고 맨 위의 메소드를 반환하는 역할을 합니다.
isEmpty(): 현재 스택이 비어있는지 안비어있는지 true, false로 반환합니다.
search(Object o): 스택에 해당 객체의 위치를 반환합니다.
push() | pop() | peek() | isEmpty() | search() |
---|---|---|---|---|
O(1) | O(1) | O(1) | O(1) | O(n) |