Linked Stack in Python
1. Node
class Node:
def __init__(self, data):
self.data = data
self.next = None
def __str__(self):
return str(self.data)
2. Stack
class Stack:
def __init__(self):
self.size = 0
self.top = None
def push(self, data):
n = Node(data)
if self.top:
n.next = self.top
self.top = n
self.size += 1
def peek(self):
return self.top if not self.empty() else None
def pop(self):
ptr = None
if not self.empty():
ptr = self.top
self.top = ptr.next
self.size -= 1
return ptr
def empty(self):
return self.size == 0
def size(self):
return self.size
def traverse(self):
print(f"The current length: {self.size}")
for val in self.iter():
print(val)
def iter(self):
ptr = self.top
while ptr:
val = ptr.data
ptr = ptr.next
yield val
3. Test Codes
def test_stack():
s = Stack()
s.push("eggs")
s.push("ham")
s.push("spam")
print('-' * 15)
s.traverse()
print('-' * 15)
p = s.pop()
s.traverse()
while not s.empty():
ptr = s.pop()
if ptr:
print(ptr, " is poped.")
s.traverse()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。