代码
class Node:
def __init__(self, data, _next = None):
self.data = data #数据域
self.next = _next #指针域
class Stack:
def __init__(self):
#以链表的第一个节点作为栈顶
self.__top = None
self._size = 0
def push(self, item):
#添加一个元素item到栈顶
#让self.top指向新的节点
#让新的节点得next指向原本的栈顶
self.__top = Node(item, self.__top)
self._size += 1
def pop(self):
if self.is__empty():
raise ValueError("栈为空")
value = self.__top.data
self.__top = self.__top.next
self._size -= 1
return value
def top(self): # 返回栈顶元素
if self.is__empty():
raise ValueError("栈为空")
return self.__top.data
def is__empty(self):
return self._size == 0
def size(self):
return len(self._size)
if __name__ == '__main__':
stack = Stack()
stack.push(1)
stack.push(2)
stack.push(3)
stack.push(4)
print(stack.pop())
print(stack.pop())
print(stack.pop())
print(stack.pop())
print(stack.pop())
结果