데이터가 입력되면 입력되는 순서대로 쌓고, 나중에 들어온 것부터 먼저 사용하는(LIFO, Last In First Out) 자료구조.
스택에 데이터를 넣는 것을 "PUSH", 꺼내는 것을 "POP"이라고 한다.
스택은 대표적으로 프로그램의 수행 과정에서 사용한다.
주 프로그램에서 함수 A를 호출하면 주 프로그램 위에 함수 A가 쌓이고, 함수 A의 수행 중에 함수 B가 호출되면 함수 A 위에 함수 B가 스택 처럼 쌓인다.
함수 B의 실행이 완료되면 함수 A가 실행되고, 함수 A의 실행이 완료되면 주 프로그램이 실행된다.
python 3.8
# Stack
class Stack(object):
def __init__(self):
self.stack = []
def is_empty(self):
if self.stack:
return False
return True
def push(self, data):
self.stack.append(data)
def pop(self):
deleted = None
if self.is_empty():
print('Stack is empty!')
else:
deleted = self.stack.pop()
return deleted
github : https://github.com/honeybeeveloper/data-structure/blob/develop/stack.py
참고 : 책 <그림으로 정리한 알고리즘과 자료구조>