class Node: #堆栈链结节点的声明
def __init__(self):
self.data=0 #堆栈数据的声明
self.next=None #堆栈中用来指向下一个节点
top=None
def isEmpty():
global top
if(top==None):
return 1
else:
return 0
#将指定的数据压入堆栈
def push(data):
global top
new_add_node=Node()
new_add_node.data=data #将传入的值指定为节点的内容
new_add_node.next=top #将新节点指向堆栈的顶端
top=new_add_node #新节点成为堆栈的顶端
#从堆栈弹出数据
def pop():
global top
if isEmpty():
print('===目前为空堆栈===')
return -1
else:
ptr=top #指向堆栈的顶端
top=top.next #将堆栈顶端的指针指向下一个节点
temp=ptr.data #弹出堆栈的数据
return temp #将从堆栈弹出的数据返回给主程序
#主程序
while True:
i=int(input('要压入堆栈,请输入1,要弹出则输入0,停止操作则输入-1: '))
if i==-1:
break
elif i==1:
value=int(input('请输入元素值:'))
push(value)
elif i==0:
print('弹出的元素为%d' %pop())
print('============================')
while(not isEmpty()): #将数据陆续从顶端弹出
print('堆栈弹出的顺序为:%d' %pop())
print('============================')