链式栈
class Node:
'''节点类'''
def __init__(self, value=None):
self.value = value
self.next = None
class LinkListStack:
'''栈'''
def __init__(self):
'''初始化一个空栈'''
self.head = None
def is_empty(self):
"""判断是否为空"""
return self.head == None
def push(self, value):
"""入栈"""
node = Node(value)
node.next = self.head
self.head = node
def pop(self):
'''出栈'''
if self.is_empty():
'''如果为空'''
raise Exception('pop from an empty stack')
value = self.head.value
self.head = self.head.next
return value
def peek(self):
'''查看栈顶元素'''
if self.is_empty():
raise Exception('stack is empty')
return self.head.value
def size(self):
cur = self.head
count = 0
while cur:
count += 1
cur = cur.next
return count
if __name__ == "__main__":
s = LinkListStack()
s.push(1)
s.push(2)
print(s.peek())
print(s.size())