一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

Python 数据结构之堆栈实例代码

时间:2017-03-01 编辑:简简单单 来源:一聚教程网

Python 堆栈

堆栈是一个后进先出(LIFO)的数据结构. 堆栈这个数据结构可以用于处理大部分具有后进先出的特性的程序流 .
在堆栈中, push 和 pop 是常用术语:

  • push: 意思是把一个对象入栈.

  • pop: 意思是把一个对象出栈.

下面是一个由 Python 实现的简单的堆栈结构:

 

 代码如下复制代码

stack=[]        # 初始化一个列表数据类型对象, 作为一个栈

 

defpushit():      # 定义一个入栈方法

  stack.append(raw_input('Enter New String: ').strip())  

  # 提示输入一个入栈的 String 对象, 调用 Str.strip() 保证输入的 String 值不包含多余的空格

 

defpopit():       # 定义一个出栈方法

  iflen(stack)==0:

    print"Cannot pop from an empty stack!"

  else:

    print'Remove [', `stack.pop()`,']'

    # 使用反单引号(` `)来代替 repr(), 把 String 的值用引号扩起来, 而不仅显示 String 的值

 

defviewstack():     # 定义一个显示堆栈中的内容的方法

    printstack

 

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

# 定义一个 Dict 类型对象, 将字符映射到相应的 function .可以通过输入字符来执行相应的操作

 

defshowmenu():     # 定义一个操作菜单提示方法

  pr="""

  p(U)sh

  p(O)p

  (V)iew

  (Q)uit

 

  Enter choice: """

 

  whileTrue:

    whileTrue:

      try:

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

        # Str.strip() 去除 String 对象前后的多余空格

        # Str.lower() 将多有输入转化为小写, 便于后期的统一判断

        # 输入 ^D(EOF, 产生一个 EOFError 异常)

        # 输入 ^C(中断退出, 产生一个 keyboardInterrupt 异常)

 

      except(EOFError, KeyboardInterrupt, IndexError):

        choice='q'

 

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

 

      ifchoicenotin'uovq':

        print'Invalid option, try again'

      else:

        break

 

 

    ifchoice=='q':

      break

    CMDs[choice]()

    # 获取 Dict 中字符对应的 functionName, 实现函数调用

 

if__name__=='__main__':

  showmenu()

 

NOTE: 在堆栈数据结构中, 主要应用了 List 数据类型对象的 容器 和 可变 等特性, 表现在 List.append() 和 List.pop() 这两个列表类型内建函数的调用.

热门栏目