Search
Duplicate
🙂

Stack

정의
순서가 보존되는 선형 자료구조의 일종으로 LIFO의 메커니즘을 가지고 있다.
특징
데이터를 입력되는 순서대로 정렬한다.
LIFO의 메커니즘을 가진다. 즉 입력된 순서의 역순으로 가져오는 방법을 갖고 있다.
동적 메모리
시간복잡도
조회
검색
삽입
제거
O(n)
O(n)
O(1)
O(1)
용도
재귀적인 특징을 가지고 있어 프로그램을 개발할 때, 자주 쓰이는 자료구조다.
후위 표기법 연산, 괄호 유효성 검사, 웹 브라우저 방문기록, 깊이우선탐색 등에 사용된다.

Stack 두 개로 Queue 한 개

하나의 stack에는 enqueue, 나머지 하나의 stack은 dequeue를 구현한다.
enqueue
public void enqueue(int value) { stack1.push(value); }
Java
복사
instackpush()한다.
dequeue
public int dequeue() { if (stack2.isEmpty()) { while (!stack1.isEmpty()) { stack2.push(stack1.pop()); } } return stack2.pop(); }
Java
복사
outsatck이 비어있을 경우, instack의 모든 요소를 pop()outstackpush()한다.
outstack.pop()을 하게 되면 가장 먼저 왔던 데이터가 가장 먼저 출력된다.
비어있지 않을 경우, 그냥 출력하면 된다.