Python能实现栈的结构吗

python

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

什么是栈?

栈(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 '

You 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能实现栈的结构吗 的全部内容, 来源链接: utcz.com/z/521031.html

回到顶部