stack은 후입선출 LIFO(Last In First Out)의 자료구조 입니다. 시간복잡도는 push O(1), pop O(1)입니다. 활용 예시는 후위 표기법 연산, 괄호 유효성 검사, 웹 브라우저 방문기록(뒤로 가기), 깊이우선탐색(DFS)등이 있습니다.
stack은 시간 순서상 가장 최근에 추가한 데이터가 가장 먼저 나오는 후입선출 LIFO(Last In First Out)형식으로 데이터를 저장하는 자료구조 입니다.

stack에서 데이터를 추가하는 것을 push라고 하고 데이터를 추출 하는 것은 pop이라고 합니다. push의 경우 stack의 맨 뒤에 데이터를 추가하면 완료되기 때문에 시간복잡도는 O(1)입니다. 이와 동일하게 pop의 경우도 맨 뒤의 데이터를 삭제하면 완료 되기 때문에 O(1)의 시간복잡도를 갖습니다. push와 pop은 모두 stack의 top에 원소를 추가하거나 삭제하는 형식으로 구현됩니다.
stack은 재귀적인 특징이 있어서 프로그램을 개발할 때 자주 쓰이는 자료구조 입니다. 활용 예시로는 call stack, 후위 표기법 ㅇ녀산, 괄호 유효성 검사, 웹 브라우저 방문기록(뒤도 가기), 깊이우선탐색(DFS) 등이 있습니다.
queue위 enqueue()를 구현할 때 첫 번째 stack을 사용하고, dequeue()를 구현할 때 두번째 stack을 사용하면 queue를 구현할 수 있습니다.
편의상 enqueue()를 사용할 stack을 instack이라고 부르고 dequeue()에 사용할 stack을 outstack이라고 칭하겠습니다. 두 개의 stack으로 queue를 구현하는 방법은 다음과 같습니다.
편의상 push()에 사용할 queue는 q1이라고 부르고 pop()에 사용할 queue를 q2라고 칭하겠습니다. 두 개의 queue로 stack을 구현하는 방법은 다음과 같습니다.
| Hash table & BST(Binary Search Tree) (0) | 2024.02.29 |
|---|---|
| Queue vs Priority queue (0) | 2024.02.29 |
| Queue (0) | 2024.02.25 |
| Array vs Linked list (0) | 2024.02.14 |
| Linked List (0) | 2024.02.14 |