python实现数据结构-栈
注:本文档主要是学习《Python核心编程(第二版)》时的练习题。
栈是一种"后进先出"的数据结构(LIFO),是一种操作受限的线性结构,数据只能从栈顶进入和栈顶出去。示意图如下:

代码实现方式如下:
#!/usr/bin/env python stack = [] def pushstack():
stack.append(raw_input('Enter new string: ')) def popstack():
if len(stack) == 0:
print 'Cannot pop from empty stack!'
else:
print 'Removed [', stack.pop(), ']' def viewstack():
print stack CMDs = {'u':pushstack, 'o':popstack, 'v':viewstack} def showmenu():
pr = """
p(U)sh
P(O)p
(V)iew
(Q)uit
Enter choice:""" while True:
try:
choice = raw_input(pr).strip()[0].lower()
except(EOFError, keyboardInterrupt, IndexError):
choice = 'q' print '\nYou picked: [%s]' % choice
if choice not in 'uovq':
print 'Invalid option, try again'
continue if choice == 'q':
break CMDs[choice]() if __name__ == '__main__':
showmenu()
测试现象:
[root@localhost python]# python stack.py p(U)sh
P(O)p
(V)iew
(Q)uit
Enter choice:u You picked: [u]
Enter new string: abc p(U)sh
P(O)p
(V)iew
(Q)uit
Enter choice:u You picked: [u]
Enter new string: cde p(U)sh
P(O)p
(V)iew
(Q)uit
Enter choice:u You picked: [u]
Enter new string: 123 p(U)sh
P(O)p
(V)iew
(Q)uit
Enter choice:v You picked: [v]
['abc', 'cde', ''] p(U)sh
P(O)p
(V)iew
(Q)uit
Enter choice:o You picked: [o]
Removed [ 123 ] p(U)sh
P(O)p
(V)iew
(Q)uit
Enter choice:o You picked: [o]
Removed [ cde ] p(U)sh
P(O)p
(V)iew
(Q)uit
Enter choice:v You picked: [v]
['abc']
python实现数据结构-栈的更多相关文章
- python基本数据结构栈stack和队列queue
1,栈,后进先出,多用于反转 Python里面实现栈,就是把list包装成一个类,再添加一些方法作为栈的基本操作. 栈的实现: class Stack(object): #初始化栈为空列表 def _ ...
- python 与数据结构
在上面的文章中,我写了python中的一些特性,主要是简单为主,主要是因为一些其他复杂的东西可以通过简单的知识演变而来,比如装饰器还可以带参数,可以使用装饰类,在类中不同的方法中调用,不想写的太复杂, ...
- [0x00 用Python讲解数据结构与算法] 概览
自从工作后就没什么时间更新博客了,最近抽空学了点Python,觉得Python真的是很强大呀.想来在大学中没有学好数据结构和算法,自己的意志力一直不够坚定,这次想好好看一本书,认真把基本的数据结构和算 ...
- 用python 实现一个栈
前言 Python本身已有顺序表(List.Tupple)的实现,所以这里从栈开始. 什么是栈 想象一摞被堆起来的书,这就是栈.这堆书的特点是,最后被堆进去的书,永远在最上面.从这堆书里面取一本书出来 ...
- (python数据分析)第03章 Python的数据结构、函数和文件
本章讨论Python的内置功能,这些功能本书会用到很多.虽然扩展库,比如pandas和Numpy,使处理大数据集很方便,但它们是和Python的内置数据处理工具一同使用的. 我们会从Python最基础 ...
- python常用数据结构讲解
一:序列 在数学上,序列是被排成一排的对象,而在python中,序列是最基本的数据结构.它的主要特征为拥有索引,每个索引的元素是可迭代对象.都可以进行索引,切片,加,乘,检查成员等操作.在py ...
- Python -- 堆数据结构 heapq - I love this game! - 博客频道 - CSDN.NET
Python -- 堆数据结构 heapq - I love this game! - 博客频道 - CSDN.NET Python -- 堆数据结构 heapq 分类: Python 2012-09 ...
- python实现数据结构单链表
#python实现数据结构单链表 # -*- coding: utf-8 -*- class Node(object): """节点""" ...
- 《用Python解决数据结构与算法问题》在线阅读
源于经典 数据结构作为计算机从业人员的必备基础,Java, c 之类的语言有很多这方面的书籍,Python 相对较少, 其中比较著名的一本 problem-solving-with-algorithm ...
随机推荐
- 记一次linux磁盘清理 - 已经删除的文件占用了大量磁盘空间
今天开发环境磁盘占满了,导致开发环境上的 nginx .redis 等组件总是报异常. 跳到系统根目录下 cd / 检查磁盘占用情况 df -h 哇,40G硬盘全用完了.看看是哪些文件占了那么多内存. ...
- JavaScript | 值传递、引用传递的区别
值传递 JavaScript值传递的数据类型:字符串(String).数字(Number).布尔(Boolean).空(Null).未定义(Undefined), 这五种数据类型是按值访问的,因为可以 ...
- .NET Core开发的iNeuOS工业互联平台,升级四大特性:配置数据接口、图元绑定数据、预警配置和自定义菜单
目 录 1. 概述... 2 2. 演示信息... 2 3. iNeuView(Web组态)配置数据接口... 2 4. iNeuView(Web组 ...
- 0019 盒子模型(CSS重点):边框、内外边距、布局稳定性、PS
typora-copy-images-to: media 第01阶段.前端基础.盒子模型 盒子模型(CSS重点) css学习三大重点: css 盒子模型 . 浮动 . 定位 主题思路: 目标: 理解: ...
- $vjudge\ CSP-S$专题专练题解
照例先放个链接$QwQ$ $A$ $QwQ$之前写过题解辣. 重新说下趴,就给横坐标纵坐标也开点,然后每个点连向对应横纵坐标边权为$0$,相邻横坐标点之间连边,相邻纵坐标点之间连边,跑个最短路就完事$ ...
- Tomcat从安装到配置Https SSL证书
为什么要写本文? 今天一个群友在群里问怎么给Tomcat配置SSL,也就是HTTPS,他买的阿里云的服务器,自带公网ip,还找到了免费的SSL证书 既然@我了,我就帮忙搞一搞呗,我就要了一个带sudo ...
- CAP理论的理解
CAP理论作为分布式系统的基础理论,它描述的是一个分布式系统在以下三个特性中: 一致性(Consistency) 可用性(Availability) 分区容错性(Partition tolerance ...
- Pillow库来着
第一步肯定是安装啦 pip install pillow 如果安装报错,可以升级一下pip库,因为有可能是pip版本低了......... pip show pip 升级用 python -m pip ...
- Codeforces Round #612 (Div. 2) 前四题题解
这场比赛的出题人挺有意思,全部magic成了青色. 还有题目中的图片特别有趣. 晚上没打,开virtual contest打的,就会前三道,我太菜了. 最后看着题解补了第四道. 比赛传送门 A. An ...
- day5 函数和参数
函数就是最基本的一种代码抽象的方式 定义一个函数使用def语句 def my_abs(x): if x >= 0: return x else: return -x 定义一个什么事也不做的空函数 ...