堆栈二链表实现堆栈

用链表来实现堆栈的优点是随时可以动态改变链表的长度,能够有效利用内存资源,缺点就是设计的算法比较复杂

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('============================')

 

 

转载于:https://www.cnblogs.com/jzxs/p/10226859.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值