스택은 LIFO(Last In, Fisrt Out) 또는 FILO(First In, Last Out) 데이터 관리 방식을 따름
대표적인 스택의 활용
주요 기능
Visualgo 사이트에서 시연해보며 이해하기 (push/pop 만 클릭해보며): https://visualgo.net/en/list
# 재귀 함수
def recursive(data):
if data < 0:
print ("ended") # 재귀 base condtion (안해주면 무한 루프 걸림)
else:
print(data)
recursive(data - 1)
print("returned", data)
recursive(4)
👉result
4
3
2
1
0
ended
returned 0
returned 1
returned 2
returned 3
returned 4

다음과 같이 함수위에 함수가 스택되어 호출된다. 그리고 맨위 함수가 끝나면 쌓였던 함수가 위에서 부터 차례로 실행된다
스택은 단순하고 빠른 성능을 위해 사용되므로, 보통 배열 구조를 활용해서 구현하는 것이 일반적임.
이 경우, 위에서 열거한 단점이 있을 수 있음
data_stack = list()
data_stack.append(1)
data_stack.append(2)
print(data_stack)
print(data_stack.pop())
👉result
[1, 2]
2
stack_list = list()
def push(data):
stack_list.append(data)
def pop():
data = stack_list[-1]
del stack_list[-1]
return data
for index in range(10):
push(index)
pop()
👉result
9