一、添加一个元素到栈顶
def push(self,data):
node=Node(item,self.__top)
node.next=self.__top
self.__top=node
self._size+=1
二、弹出栈顶元素
def pop(self)
if self.is_empty():
print('栈为空')
else:
value=.data
self.__top=self.__top.next
self._size-=1
return value
三、返回栈顶元素
def top(self):
if self.is_empty():
print('栈顶元素为空')
else:
return self.__top.data
四、判断栈是否为空
def is_empty(self)
return self.__size==0
五、判断栈中数据数量
def size(self):
return self.__size
代码块
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):
# 添加一个元素到栈顶
# 让指向新的节点
# 让新的节点的next指向原本的节点
#self.__top = Node(item, self.__top)
node=Node(item,self.__top)
node.next=self.__top
self.__top = node
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
#return self.__top == None
def size(self):
return self._size
if __name__ == '__main__':
stack = Stack()
stack.push(1)
stack.push(2)
stack.push(3)
stack.push(4)
print(stack.size())
print(stack.pop())
print(stack.pop())
print(stack.pop())
print(stack.pop())
print(stack.pop())
print(stack.is_empty())