이 문제를 해결하고자 스택의 내부 표현은 동적 배열로 하고 연산 구현은 리스트의 함수를 래핑(wrapping)하는 방법으로 추상화해 보겠습니다.
코드 5-1 stack.py
class Stack:
def __init__(self):
self.container = list() ➊
def empty(self):
if not self.container:
return True
else:
return False
def push(self, data):
self.container.append(data) ➋
def pop(self):
if self.empty():
return None
return self.container.pop()
def peek(self):
if self.empty():
return None
return self.container[-1]
➊ 내부 표현(representation): 실제로 데이터를 담을 객체는 동적 배열
➋ 맨 마지막 요소가 top: 동적 배열의 맨 마지막에 요소를 추가하는 것은 스택의 top에 요소를 추가하는 것과 같습니다.