目录

堆栈

堆栈是一个后进先出(LIFO)的数据结构. 堆栈这个数据结构可以用于处理大部分具有后进先出的特性的程序流 .

在堆栈中, pushpop 是常用术语:

  • 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() 这两个列表类型内建函数的调用.

最新文章

  1. MVC的基类
  2. SQL 行转列和列转行
  3. Spring事务管理者与Spring事务注解--声明式事务
  4. 关闭Eclipse中自动弹出console的功能
  5. 应该始终以PreparedStatement代替Statement
  6. iOS三种定时器的用法NSTimer、CADisplayLink、GCD
  7. iOS之Sqlite和FMDB
  8. bzoj 1264 [AHOI2006]基因匹配Match(DP+树状数组)
  9. vue-resource pos提交t数据时碰到Django csrf
  10. 新概念英语(1-99)Ow!
  11. 机器学习基石:07 The VC Dimension
  12. C#弹出对话框
  13. python中的矩阵、多维数组
  14. 简单使用Vuex步骤及注意事项
  15. 将控件画成圆角的效果(Delphi)
  16. Jenkins install
  17. Linux下查看系统版本号信息的方法(转载)
  18. Aheadof Time Compilation(AOT) vs (JIT)Just In Time compilation approach
  19. Prufer Code
  20. PCI 设备详解二

热门文章

  1. ROS - 日志
  2. cdn 链接
  3. android ellipsize的使用及实现跑马灯效果总结
  4. OpenLayers绘制图形
  5. sea.js模块加载工具
  6. mkdir无法创建目录权限不够
  7. 前端(十一)—— JavaScript基础:JS存在的位置、JS变量定义、调试方式、JS数据类型、运算符
  8. 20140806 交换两个数 extern “C”用法
  9. 8.1_springboot2.x之Actuator应用监控
  10. java-day26