Python能实现栈的结构吗

栈(stack)又名堆栈,它是一种运算受限的线性表。在Python中可使用列表进行实现。

5d0ae417b267d972

什么是栈?

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

如何实现?

在Python中使用列表来实现:

#!/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()