Python模拟栈(stack)进出--实现栈的先进后出

先说明下:,是限制在表一端进行插入和删除操作的线性表。允许进行插入、删除操作的这一端称为栈顶(Top),另一个固定端称为栈底。例如栈中有三个元素,近栈的顺序是a1、a2、a3,当需要出栈时顺序为a3,a2,a1,所以栈又称“后进先出”或“先进后出”的线性表,简称“LIFO表”或“FILO表”。

现在使用Python实现栈的进出,直接上代码吧:

#模拟栈的操作:先进后出
#建立空的栈,用列表模拟你顺序栈
stack = []
#1.进栈:将输入的字符追加到stack栈中,模拟入栈
def push_stack():
    num = input("input to push :")
    stack.append(num)
    print("%s has been push " %num)
#2.出栈:删除最后一个字符,模拟出栈
def pop_stack():
    print("%s has out" %stack.pop())
#3.显示目前栈的内容
def show_stack():
    print(stack)

#此处将可选的命令放在字典中作为key,然后找到key所对应的的函数名
def show_menu():
    #注意,函数名不能加'()',否则系统就会当成函数的调用从而直接执行这个函数
    commands = {'0':push_stack,
             '1':pop_stack,
             '2':show_stack,
             }
    prompt = """
    (0):push stack
    (1):pop stack 
    (2):show stack
    (3):exit
    input what U want(0/1/2/3):"""
    while True:
        #input(prompt)表示将上面的prompt显示出来
        #然后得到字符串,用strip()去除两端空白,再取下标为0的字符
        choice = input(prompt).strip()[0]
        if choice == 3:
            break
        if choice not in '0123':
            print("Invalid input,Try again")
        #将'()'加在此处,表示调用所选数字对应的函数
        commands[choice]()

show_menu()

执行如下:

1)入栈:

2)检查入栈的数据是否成功入栈:

3)出栈:

栈顶的优先出栈,两次出栈后,剩下‘0’,‘1’。

思想很容易理解,进栈出栈,先进后出,但是代码的话还是得多琢磨下,结合字典,每个操作都调用独立的函数,进行简单的判断后再执行对应函数。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值