스택은 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')
else:
print (data)
recursive(data - 1)
print ('returned', data)
recursive(4)
4 3 2 1 0 ended returned 0 returned 1 returned 2 returned 3 returned 4
스택은 단순하고 빠른 성능을 위해 사용되므로, 보통 배열 구조를 활용해서 구현하는 것이 일반적임. 이 경우, 위에서 열거한 단점이 있을 수 있음
data_list = list()
# 데이터 입력하기, 본래 스택에서는 push 메서드임, 동일한 역할로 리스트는 append() 메서드를 활용 가능
data_list.append(1)
data_list.append(2)
data_list
[1, 2]
# 데이터 빼내기 - pop() 메서드로 리스트 맨 뒤에 있는 데이터를 빼올 수 있음
data = data_list.pop()
data
2
# 데이터 빼내기
data = data_list.pop()
data
1
data_list
[]
stack_list = list()
def push(data):
stack_list.append(data)
def pop():
data = stack_list[-1]
del stack_list[-1]
return data
push(1)
push(2)
push(3)
push(4)
push(5)
print (pop())
5
stack_list = list()
def push(data):
stack_list.append(data)
def pop():
data = stack_list[-1]
del stack_list[-1]
return data
for num in range(10):
push(num)
print(pop())
9
print(pop())
8