Python 数据结构_堆栈

原创 2016年08月30日 16:41:02

目录

堆栈

堆栈是一个后进先出(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() 这两个列表类型内建函数的调用.

版权声明:转载请注明出处 JmilkFan:http://blog.csdn.net/jmilk 举报

相关文章推荐

SQLAlchemy_定义(一对一/一对多/多对多)关系

目录目录 Basic Relationship Patterns One To Many One To One Many To ManyBasic Relationship Patterns基本关系模...
  • Jmilk
  • Jmilk
  • 2016-09-05 23:36
  • 5290

SQLAlchemy 学习笔记

SQLAlchemy是Python界的ORM(Object Relational Mapper)框架,它两个主要的组件: SQLAlchemy ORM 和SQLAlchemy Core 。 ...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

南充高坪机场订票电话是多少

订票电话:【9501-3219-52814】春节订票有折扣 【官方唯一订票专线】★★★温馨提示:【 9 5 0 1-3 2 1 9-5 2 8 1 4 】订票预售期为15-30天★★★ -------...

sqlalchemy 的一对多关系

#main.pyfrom flask import Flaskfrom flask.ext.sqlalchemy import SQLAlchemyfrom config import DevConf...

Python 数据结构_队列

目录目录 队列队列Queue 队列是一种先进先出(FIFO)的数据类型, 新的元素通过 入队 的方式添加进 Queue 的末尾, 出队 就是从 Queue 的头部删除元素.用列表来做 Queue:qu...
  • Jmilk
  • Jmilk
  • 2016-08-30 17:03
  • 586

Openstack_SQLAlchemy_一对多关系表的多表插入实现

目录目录 Openstack 与 SQLAlchemy 一个多表插入的 Demo 小结Openstack 与 SQLAlchemySQLAlchemy 是 Python 语言下的一款开源软件,它提供了...
  • Jmilk
  • Jmilk
  • 2016-09-25 16:33
  • 1789

用flask开发个人博客(1)—— 一个简单的flask程序

1、创建flask程序实例 from flask import Flask app=Flask(__name__) Flask接受一个字符串作为参数,这个参数决定程序的根目录,以便于能找到相对于程序...

用flask开发个人博客(2)—— Flask中的请求对象request

在介绍flask中的request之前,先简单介绍下python中的ThreadLocal对象。ThreadLocal,故名思义,就是线程中的全局变量,最近才接触这个概念,之前在C++和C#中还没遇到...

用 Flask 来写个轻博客 (6) — (M)VC_models 的关系(one to many)

#目录 [toc] #前文列表 用 Flask 来写个轻博客 (1) — 创建项目 用 Flask 来写个轻博客 (2) — Hello World! 用 Flask 来写个轻...
  • Jmilk
  • Jmilk
  • 2016-11-19 14:58
  • 4947

用flask开发个人博客(5)——flask中的四种响应类型

在之前的代码中,视图函数都返回了一个字符串,在实际的开发中其返回的html文件内容,本质其实也是字符串。下面总结下flask中可以作为响应的几种方法。 1、响应字符串。 这个在前面已经说明过,但是需要...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)