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

作者:lqh 时间:2023-10-30 07:27:43 

Python 堆栈

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

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

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

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


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

def pushit():       # 定义一个入栈方法
 stack.append(raw_input('Enter New String: ').strip())  
 # 提示输入一个入栈的 String 对象, 调用 Str.strip() 保证输入的 String 值不包含多余的空格

def popit():        # 定义一个出栈方法
 if len(stack) == 0:
   print "Cannot pop from an empty stack!"
 else:
   print 'Remove [', `stack.pop()`, ']'
   # 使用反单引号(` `)来代替 repr(), 把 String 的值用引号扩起来, 而不仅显示 String 的值

def viewstack():      # 定义一个显示堆栈中的内容的方法
   print stack

CMDs = {'u':pushit, 'o':popit, 'v':viewstack}
# 定义一个 Dict 类型对象, 将字符映射到相应的 function .可以通过输入字符来执行相应的操作

def showmenu():      # 定义一个操作菜单提示方法
 pr = """
 p(U)sh
 p(O)p
 (V)iew
 (Q)uit

Enter choice: """

while True:
   while True:
     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

if choice not in 'uovq':
       print 'Invalid option, try again'
     else:
       break

if choice == 'q':
     break
   CMDs[choice]()
   # 获取 Dict 中字符对应的 functionName, 实现函数调用

if __name__ == '__main__':
 showmenu()

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

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

来源:http://blog.csdn.net/jmilk/article/details/52370692

标签:Python,堆栈
0
投稿

猜你喜欢

  • python机器学习基础决策树与随机森林概率论

    2023-06-04 16:55:08
  • Python3使用PySynth制作音乐的方法

    2021-03-18 19:41:01
  • python基础知识之try...except...的详细用法实例

    2022-12-26 10:21:27
  • 微信公众平台开发入门教程(图文详解)

    2023-06-21 11:10:05
  • JavaScript高级程序设计 阅读笔记(十五) 浏览器中的JavaScript

    2024-04-10 10:57:11
  • 详解django自定义中间件处理

    2023-09-30 08:19:12
  • Python元素集合的列表切片

    2023-08-08 23:08:57
  • javascript中var与let、const的区别详解

    2024-05-09 15:07:32
  • Python双链表原理与实现方法详解

    2023-10-10 20:55:40
  • 网页设计中的对比原则

    2010-03-20 21:50:00
  • SQL Group By分组后如何选取每组最新的一条数据

    2024-01-18 21:50:51
  • TensorFlow神经网络学习之张量与变量概念

    2023-07-06 20:58:02
  • python结合shell自动创建kafka的连接器实战教程

    2023-01-06 19:17:13
  • 对TensorFlow中的variables_to_restore函数详解

    2022-09-11 00:49:19
  • python如何修改装饰器中参数

    2021-08-18 15:28:27
  • MYSQL数据库设计的一点总结

    2008-05-24 09:36:00
  • 各个系统下的Python解释器相关安装方法

    2022-10-09 00:24:34
  • 解读ASP.NET 5 & MVC6系列教程(6):Middleware详解

    2023-07-23 22:27:34
  • centos7上mysql8.0rpm方式安装教程图解

    2024-01-13 06:23:59
  • django框架事务处理小结【ORM 事务及raw sql,customize sql 事务处理】

    2022-02-27 23:20:03
  • asp之家 网络编程 m.aspxhome.com