class Node: #堆栈链结节点的声明 def __init__(self): self.data=0 #堆栈数据的声明 self.next=None #堆栈中用来指向下一个节点top=Nonedef 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('============================')