더북(TheBook)

코드 5-1에서 Stack 클래스의 생성자를 보면, self.container=list()를 사용하여 실제 데이터를 담을 객체로 동적 배열을 생성하고 있습니다. 이렇게 하면 push 연산은 리스트의 append로, pop 연산은 리스트의 매개변수 없는 pop으로, peek는 단순히 동적 배열의 마지막 데이터를 인덱싱하는 것으로 대체하면 됩니다. 스택 사용 예는 다음과 같습니다.

코드 5-2 stack.py

s = Stack()

s.push(1)
s.push(2)
s.push(3)
s.push(4)
s.push(5)

while not s.empty():
    print(s.pop(), end=' ')

코드를 실행하면 5 4 3 2 1이 출력됩니다.

이와 같이 추상화하면 유저 프로그래머도 한눈에 스택을 사용한다는 사실을 알 것입니다.

Tip 스택은 어디에 쓰나요?


스택은 알게 모르게 다양한 곳에 쓰이고 있습니다. OS가 관리하는 메모리 영역 중에는 지역 변수가 할당되는 스택 메모리가 있는데, 여기에 스택 프레임이 쌓입니다. 이름부터 어떤 자료 구조를 이용하여 만들었는지 알 수 있지요. 또 뒤에서 배울 트리에서 모든 데이터를 순회하는 데 필요한 자료 구조 중 하나로 스택이 있습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.