티스토리 뷰

하나의 노드에는 data 와 다음 노드를 가르키는 next 를 가지고 있다.


next 에 none 이면 끝이고 head 의 next 가 none 이면 빈 스택이다.


화살표가 끈어지면 레퍼런스 카운트가 없기 때문에 gc 에 의해서 


메모리가 해제될것이다. 






링크드 리스트를 이용해서 스택을 구현해 보자


node 클래스를 만들고 


node 를 stack 클래스에서 이용하자.




class Node:
def __init__(self, data, prev): self.data, self.prev = data, prev


class Stack:
def __init__(self): self.head = None

def is_empty(self): return not bool(self.head)

def push(self, data): self.head = Node(data, self.head)

def pop(self):
if self.is_empty():
return None
ret_data, self.head = self.head.data, self.head.prev
return ret_data

def peek(self): return None if self.is_empty() else self.head.data


s = Stack()
print(s.is_empty())
for i in range(10):
s.push(i)
print("peek of data : {}".format(s.peek())) # 5
while not s.is_empty():
print(s.pop())


댓글