Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- db
- kafka
- DP
- database
- designpatternn
- storagemanger
- entityrelational
- Implementation
- SW
- datamodel
- json #typescript
Archives
- Today
- Total
i.am.developer
[자료구조] 스택 본문
스택과 큐
스택과 큐는 데이터를 저장하는 동적인 자료구조이다. 스택은 LIFO(last in first out) 구조이고 큐는 FIFO(first in first out) 구조이다.
스택
스택은 접시가 쌓인 걸 상상하면 된다.
접시를 꺼내는 순서는 맨 위에 놓인 접시가 가장 먼저 나온다.
접시를 꺼내는 순서는 맨 위에 놓인 접시가 가장 먼저 나온다.
항상 맨위의 접시를 꺼낸다는 순서를 생각하면 Last In First Out, LIFO의 구조이다.
- 스택에 무언갈 넣는 것을 PUSH연산이라고 한다.
- 반대로 꺼내는 것, 삭제(Delete)는 POP연산이다.
- 빈 스택에서 POP하려는 것을 Undeflow, 가득 찬 스택에서 PUSH하는 것을 Overflow라고 한다.
가장 최근에 Insert한 요소의 인덱스를 Stack.TOP라고 할 때 Stack의 모습은 아래와 같다.
스택은 [1,2,...,TOP]까지이다. 만약 Stack.TOP == 0 이면 Stack은 Empty라고 한다.
주요 연산
PUSH(S, x):
S.top = S.top + 1
S[S.top] = x
POP(S):
if stack-empty(S):
error "underflow"
else:
S.top = S.top - 1
return S[S.top+1]
보조연산
Stack-empty(): 스택이 비어있는지 확인
Stack-size(): 스택의 사이즈 확인
Stack-full: 스택이 가득 찼는지 확인
Stack-top: 스택의 마지막 항목을 삭제하지 않고 리턴
'프로그래밍 > Algorithm' 카테고리의 다른 글
Uniform Cost Search와 A* Search (0) | 2020.07.01 |
---|---|
[자료구조] 큐 (0) | 2020.03.10 |
[알고리즘] 멱집합 (0) | 2020.03.10 |
[알고리즘] BFS - Breadth First Search (0) | 2020.03.06 |
[Problem] 백준 14940번 쉬운 최단거리 (0) | 2019.04.20 |