关闭

Python 数据结构_堆栈

标签: python数据结构pop结构对象
1011人阅读 评论(0) 收藏 举报
分类:

目录

堆栈

堆栈是一个后进先出(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
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

用python实现堆栈和队列

一,利用python列表实现堆栈        堆栈是一个后进先出的数据结构,其工作方式就像一堆汽车排队进去一个死胡同里面,最先进去的一定是最后出来。   我们可以设置一个类,用列表来存放栈中元素的信...
  • u010786109
  • u010786109
  • 2014-10-31 10:01
  • 5636

Python显示函数调用堆栈

网上找到如下几个思路: 1、用inspect模块 2、用sys._getframe模块 3、用sys.exc_traceback,先抛一个异常,然后抓出traceback   ...
  • WHACKW
  • WHACKW
  • 2015-10-15 14:22
  • 1597

python中利用tracekback跟踪栈以及打印异常信息

​##sys.exc_info() 返回 (type, value, traceback). type为异常类型, value为异常的参数(通常为异常错误的信息), traceback为跟踪回溯的对...
  • csujiangyu
  • csujiangyu
  • 2015-04-28 10:14
  • 8249

用python学习数据结构与算法-堆栈

堆栈 堆栈(Stack)是一种后进先出(LIFO)的线性数据结构,对堆栈的插入和删除操作都只能在栈顶(top)进行。栈和队列主要用于计算过程中保存临时数据。 堆栈ADT(抽象数据类型)一般提供以下接...
  • CherDW
  • CherDW
  • 2017-02-13 11:11
  • 476

python数据结构学习笔记-4-堆栈 队列

堆栈、队列
  • hjh00
  • hjh00
  • 2015-11-02 17:19
  • 1152

用Python学习数据结构3--堆栈

一、概述堆栈(Stack):先进后出(LIFO)的线性数据结构,对堆栈的插入和删除操作都只能在栈顶(top)进行二、ADT堆栈ADT(抽象数据类型)一般提供一下接口: 创建堆栈 Stack() 向栈...
  • chibangyuxun
  • chibangyuxun
  • 2016-10-29 22:41
  • 270

数据结构_计算器 堆栈

  • 2008-08-03 23:31
  • 326KB
  • 下载

数据结构-链式堆栈

  • 2016-09-12 15:13
  • 3KB
  • 下载

数据结构-顺序堆栈

  • 2016-09-12 14:56
  • 3KB
  • 下载

数据结构堆栈算法的实现

  • 2012-12-09 21:49
  • 211KB
  • 下载
    个人资料
    • 访问:958666次
    • 积分:11977
    • 等级:
    • 排名:第1447名
    • 原创:284篇
    • 转载:6篇
    • 译文:1篇
    • 评论:285条
    看累了?! 我有歌你要听一下吗
    Github
    轻松一下~ Hope you enjoy !
    博客专栏
    最新评论
    广告位去除
    统计