• 技术文章 >Python技术 >Python基础教程

    Python能实现栈的结构吗

    PythonPython2019-06-20 09:42:26原创2506
    栈(stack)又名堆栈,它是一种运算受限的线性表。在Python中可使用列表进行实现。

    什么是栈?

    栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。

    如何实现?

    在Python中使用列表来实现:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    41

    42

    43

    44

    #!/usr/bin/env python

    #定义一个列表来模拟栈

    stack = []

    #进栈,调用列表的append()函数加到列表的末尾,strip()没有参数是去掉首尾的空格

    def pushit():

      stack.append(raw_input('Enter new string: ').strip())

    #出栈,用到了pop()函数

    def popit():

      if len(stack) == 0:

        print 'Cannot pop from an empty stack!'

      else:

        print 'Removed [', stack.pop(), ']'

    #编历栈

    def viewstack():

      print stack

    #CMDs是字典的使用

    CMDs = {'u': pushit, 'o': popit, 'v': viewstack}

    #pr为提示字符

    def showmenu():

      pr = """

      p(U)sh

      p(O)p

      (V)iew

      (Q)uit

        Enter choice: """

      while True:

        while True:

          try:

            #先用strip()去掉空格,再把第一个字符转换成小写的

            choice = raw_input(pr).strip()[0].lower()

          except (EOFError, KeyboardInterrupt, IndexError):

            choice = 'q'

          print '\nYou picked: [%s]' % choice

          if choice not in 'uovq':

            print 'Invalid option, try again'

          else:

            break

    #CMDs[]根据输入的choice从字典中对应相应的value,比如说输入u,从字典中得到value为pushit,执行pushit()进栈操作

        if choice == 'q':

          break

        CMDs[choice]()

    #判断是否是从本文件进入,而不是被调用

    if __name__ == '__main__':

      showmenu()

    专题推荐:python
    上一篇:怎么通过Python获取文件指定行的内容? 下一篇:Python中的简单定时器

    相关文章推荐

    • Python中的center()是怎么用的• 用Python绘制几个动画

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网