Stack은 데이터의 삽입과 삭제가 저장소의 맨 윗부분(top)에서만 일어나는 자료구조이다.
스택은 데이터가 순서대로 저장되고 스택의 마지막에 넣은 요소가 처음으로 꺼내지는 저장소의 구조를 가지고 있기때문에,
LIFO (Last In First Out) 이라고 불린다.
Stack은 연속으로 저장된 데이터 구조를 가지고 있고 맨 위 요소에 대한 주소값을 가지고 있는 어레이나 싱글 링크드 리스트로 구현이 가능하다.
# 간단한 스택 구현
stack = [] # 스택을 리스트로 만든다
stack.append(1) # 스택에 1을 넣는다.
stack.append(2) # 스택에 2를 넣는다.
print(stack) # 스택 출력
print(stack.pop()) # 스택에 맨윗 원소를 꺼낸다. == 2
print(stack.pop()) # 스택에 한번더 맨윗 원소를 꺼낸다. ==1
class Stack:
def __init__(self)l
self.items = []
def push(self, item):
self.items.append(item)
def pop(self):
return self.items.pop
def peek(self);
return self.stack[-1]
def isEmpty(self):
return not self.items
if __name__ == "__main__":
stack = Stack()
print(stack)
print(stack.isEmpty()) # 처음엔 아무것도 들어있지 않으므로 True
stack.push(1)
stack.push(2)
stack.push(3)
print(stack.peek())
print(stack.pop())
print(stack.pop())
print(stack.isEmpty()) # 모든원소를 내보냈으므로 True