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

发布时间 - 2026-01-10 22:43:51    点击率:

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

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


# Python  # 堆栈  # 堆栈数据结构的实现  # 数据结构  # 堆和栈  # python实现堆栈与队列的方法  # Python基于列表模拟堆栈和队列功能示例  # Python 实现数据结构-堆栈和队列的操作方法  # python实现异常信息堆栈输出到日志文件  # Python捕获异常堆栈信息的几种方法(小结)  # Python实现自定义异常堆栈信息的示例代码  # Python堆栈的具体使用  # 是一个  # 这两个  # 可以通过  # 用了  # 希望能  # 作为一个  # 谢谢大家  # 转化为  # 内建  # 不包含  # 后期  # 单引号  # 来代替  # strip  # Str  # raw_input  # Enter  # String 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  阿里云高弹*务器配置方案|支持分布式架构与多节点部署  Laravel策略(Policy)如何控制权限_Laravel Gates与Policies实现用户授权  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  JS实现鼠标移上去显示图片或微信二维码  ChatGPT怎么生成Excel公式_ChatGPT公式生成方法【指南】  Windows10如何更改计算机工作组_Win10系统属性修改Workgroup  如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程  如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框  作用域操作符会触发自动加载吗_php类自动加载机制与::调用【教程】  Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门  C++用Dijkstra(迪杰斯特拉)算法求最短路径  Laravel如何实现文件上传和存储?(本地与S3配置)  Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】  佐糖AI抠图怎样调整抠图精度_佐糖AI精度调整与放大细化操作【攻略】  如何在云服务器上快速搭建个人网站?  Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置  香港服务器选型指南:免备案配置与高效建站方案解析  海南网站制作公司有哪些,海口网是哪家的?  Laravel Session怎么存储_Laravel Session驱动配置详解  Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤  长沙企业网站制作哪家好,长沙水业集团官方网站?  Laravel的HTTP客户端怎么用_Laravel HTTP Client发起API请求教程  JavaScript常见的五种数组去重的方式  如何快速查询网址的建站时间与历史轨迹?  高端企业智能建站程序:SEO优化与响应式模板定制开发  如何用JavaScript实现文本编辑器_光标和选区怎么处理  Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程  如何快速生成橙子建站落地页链接?  Python自动化办公教程_ExcelWordPDF批量处理案例  Laravel怎么进行数据库回滚_Laravel Migration数据库版本控制与回滚操作  Laravel怎么做缓存_Laravel Cache系统提升应用速度的策略与技巧  javascript中闭包概念与用法深入理解  详解CentOS6.5 安装 MySQL5.1.71的方法  微信小程序 HTTPS报错整理常见问题及解决方案  香港服务器部署网站为何提示未备案?  Laravel怎么实现软删除SoftDeletes_Laravel模型回收站功能与数据恢复【步骤】  Laravel路由Route怎么设置_Laravel基础路由定义与参数传递规则【详解】  如何自定义建站之星网站的导航菜单样式?  如何正确下载安装西数主机建站助手?  历史网站制作软件,华为如何找回被删除的网站?  Thinkphp 中 distinct 的用法解析  Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程  如何在IIS中新建站点并配置端口与IP地址?  微信公众帐号开发教程之图文消息全攻略  Laravel安装步骤详细教程_Laravel环境搭建指南  如何快速选择适合个人网站的云服务器配置?  Python并发异常传播_错误处理解析【教程】  如何在宝塔面板中创建新站点?  详解阿里云nginx服务器多站点的配置