zoukankan      html  css  js  c++  java
  • 堆栈二链表实现堆栈

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

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

  • 相关阅读:
    Maven入门指南12:将项目发布到私服
    Groovy学习:第四章 Groovy特性深入
    jQuery部分疑问及小结
    Windows自动化---模拟鼠标键盘
    适配器
    object都有string
    spinner
    context
    OnclickListener
    学习-----领进门,看个人
  • 原文地址:https://www.cnblogs.com/jzxs/p/10226859.html
Copyright © 2011-2022 走看看