python中的栈结构_Python可以实现栈的结构吗
栈(stack)又名堆栈,它是一种运算受限的线性表。在Python中可使用列表进行实现。
什么是栈?
栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
如何实现?
在Python中使用列表来实现:#!/usr/bin/env python
#定义一个列表来模拟栈
stack = []
#进栈,调用列表的append()函数加到列表的末尾,strip()没有参数是去掉首尾的空格
def pushit():
stack.append(raw_input('Enter new string: ').strip())
#出栈,用到了pop()函数
def popit():
if len(stack) == 0:
print 'Cannot pop from an empty stack!'
else:
print 'Removed [', stack.pop(), ']'
#编历栈
def viewstack():
print stack
#CMDs是字典的使用
CMDs = {'u': pushit, 'o': popit, 'v': viewstack}
#pr为提示字符
def showmenu():
pr = """
p(U)sh
p(O)p
(V)iew
(Q)uit
Enter choice: """
while True:
while True:
try:
#先用strip()去掉空格,再把第一个字符转换成小写的
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'
else:
break
#CMDs[]根据输入的choice从字典中对应相应的value,比如说输入u,从字典中得到value为pushit,执行pushit()进栈操作
if choice == 'q':
break
CMDs[choice]()
#判断是否是从本文件进入,而不是被调用
if __name__ == '__main__':
showmenu()
实例内容扩展:# -*- coding:utf-8 -*-
# __author__ :kusy
# __content__:文件说明
# __date__:2018/9/30 17:28
class MyStack(object):
def __init__(self):
self.stack_list = []
self.count = 0
# 创建一个栈
def create_stack(self):
return self.stack_list
# 栈中添加值
def push(self, value):
self.stack_list.insert(0,value)
self.count += 1
#返回栈顶元素值
def peek(self):
if self.count:
return self.stack_list[0]
# 删除栈顶元素
def pop(self):
self.stack_list.pop(0)
self.count -= 1
# 返回栈是否为空
def is_empty(self):
return self.count == 0
#打印栈内容
def print_all(self):
for sl in self.stack_list:
print(sl)
if __name__ == '__main__':
ms = MyStack()
ms.create_stack()
ms.push(1)
ms.push(2)
ms.push(3)
print('栈元素:')
ms.print_all()
print('栈顶元素:',ms.peek())
ms.pop()
print('栈顶元素删除后:')
ms.print_all()
print('栈是否为空:','是' if ms.is_empty() else '否')
print('---继续删除元素')
ms.pop()
print('---继续删除元素')
ms.pop()
print('栈是否为空:','是' if ms.is_empty() else '否')
运行结果如下C:\Users\suneee\AppData\Local\Programs\Python\Python36\python.exe E:/wangjz/PyWorkSpace/LearnPython/PY0929/stack.py
栈元素:
3
2
1
栈顶元素: 3
栈顶元素删除后:
2
1
栈是否为空: 否
---继续删除元素
---继续删除元素
栈是否为空: 是
Process finished with exit code 0
到此这篇关于Python可以实现栈的结构吗的文章就介绍到这了,更多相关Python实现栈的结构的条件内容请搜索ZaLou.Cn
python中的栈结构_Python可以实现栈的结构吗相关推荐
- python术语中英对照栈图_Python常用技术栈总结
在python的基础上,加入了自己的理解,修改一些错误.最近准备去一线城市谋求发展,所以打算重新整理一下,顺便加深一下记忆. Table of Contents Python语言特性 1 Python ...
- stack在python中是什么意思_python栈是什么意思
python栈是什么意思? 栈是一种特殊的列表,栈内的元素只能通过列表的一端访问,这一端称为栈顶.栈被称为一种后入先出(LIFO,last-in-first-out)的数据结构. 由于栈具有后入先出的 ...
- python中if else语句用来形成二分支结构_python分支结构if详解
1.流程控制 1)顺序结构:从上往下依次执行(默认) 2)分支结构:根据条件来选择性的执行某段代码,实现分支结构的方式只有一种:if 3)循环结构:让指定的代码重复执行 python中实现循环结构的方 ...
- python中的目录简介_Python程序设计(第3版)董付国作者介绍、内容简介、图书详情、目录...
内容简介 <Python程序设计(第3版 微课版)>共18章,主要内容如下:第1章介绍Python基础知识与概念:第2章讲解列表.元组.字典.集合等常用序列结构:第3章讲解Python选择 ...
- python中主函数循环_python入门(三):分支、循环、函数详解
1.分支 if循环格式: if condition_1: statement_block_1 elif condition_2: statement_block_2 else: statement_b ...
- python中doc=parased.getroot()_python实例手册.py
python实例手册 #encoding:utf8 # 设定编码-支持中文 0 说明 手册制作: 雪松 littlepy www.51reboot.com 更新日期: 2016-01-21 欢迎系统运 ...
- python中csv文件操作_python中操作csv文件
python中操作csv文件 读取csv improt csv f = csv.reader(open("文件路径","r")) for i in f: pri ...
- python中print的本质_Python基础语法全解
一.Python简介 1. 了解Python Python是一种解释型(这意味着开发过程中没有了编译这个环节).面向对象(支持面向对象的风格或代码封装在对象的编程技术).动态数据类型的交互式(可在命令 ...
- python程序基础书写文本_Python基础手册4——文本结构
简单来讲,Python程序可以分解成模块(文件).语句.表达式以及对象(数据): 1.程序由模块组成 2.模块包含语句 3.语句包含表达式 4.表达式建立并处理对象. 所以,Python 代码主要由两 ...
最新文章
- [转]GridView导出Excel总结
- 活体检测方法概述与总结
- Spring Boot SchedulingConfigurer定时执行任务(配置式反射调用)
- leetcode--动态规划(Easy)
- w3c html5 客户端缓存数据格式,Html5应用程序缓存(Cache manifest)
- java io类filereader,39. Java IO: FileReader
- mac/linux下java项目使用本机自带ssh和scp命令,自动复制上传并部署的脚本
- Ruby在Windows下安装
- [转]Linux下的虚拟光驱和虚拟软驱
- Windows操作系统----安全机制----Token
- 电脑耳机有声外放无声的解决方法
- 激光跟踪传感器的工作原理
- Navigator.sendBeacon()
- Mysql正则表达式查询
- 重装系统后,没有wifi---问题已解决
- Dear Santa Claus圣诞老人创意字体 for mac
- JAVA开发工程师是什么意思?
- 敏捷结果30天之第三天:一日之计在于晨
- 量化投资学习——经典书籍介绍
- ryu---北向接口(利用socket对外通信)
热门文章
- solidworks的小金球插件_SOLIDWORKS旋转流体仿真
- java 推送消息页面_Notification API,为你的网页添加桌面通知推送
- python市场需求如何_python市场需求量大吗
- 读取配置文件失败_还在为Find_Package失败而烦恼吗?
- @Url cannot be used with @GET URL (parameter #1)
- python27.dll引起的appcrash_python27.dll错误代码126怎么解决
- QDir类cleanPath函数用法
- Android开发之虹软人脸识别活体检测基本步骤
- python的线性链表_Python线性表——单链表-阿里云开发者社区
- java bean 对象属性复制框架BeanMapping-release_0.0.2-注解支持