python 数据结构 - 栈
如需转发,请注明出处:小婷儿的python https://www.cnblogs.com/xxtalhr/p/10293388.html
欢迎关注小婷儿的博客:
有问题请在博客下留言或加作者微信:tinghai87605025 或 QQ :87605025
python QQ交流群:py_data 483766429
博客园:http://www.cnblogs.com/xxtalhr/
csdn:https://blog.csdn.net/u010986753
一、概念
栈(stack),有些地方称为堆栈,是一种后入先出(LIFO,last-in-first-out)的数据结构,可存入数据元素、访问元素、删除元素,它的特点在于只能允许在一端进行加入数据和输出数据操作。
栈可以使用顺序存储结构的内存空间实现,其内存空间分布如下:
二、应用
根据栈的特点,列表可以作为栈使用。
append相当于入栈、pop相当于出栈;
xxt = [1,2,3,'a','b','c'] xxt.append(6) #入栈 [1, 2, 3, 'a', 'b', 'c', 6] xxt.pop() #出栈 [1, 2, 3, 'a', 'b', 'c']
class Stack:
def __init__(self):
self.xxt = [] def push(self, info):
'''入栈'''
self.xxt.append(info)
return self.xxt def pop(self):
'''出栈'''
return self.xxt.pop() def isEmpty(self):
'''判断栈中是否有元素'''
return len(self.xxt) == 0 def size(self):
'''获取栈中元素个数'''
return len(self.xxt) if __name__ == '__main__':
xxt = [1, 2, 3, 'a', 'b', 'c']
xxt.append(6) # [1, 2, 3, 'a', 'b', 'c', 6]
xxt.pop() # [1, 2, 3, 'a', 'b', 'c'] stack = Stack()
print('stack.push66:', stack.push(66))
print('stack.push13:', stack.push(13))
print('stack.pop:%s,xxt:%s' % (stack.pop(), xxt))
print('stack.pop:%s,xxt:%s' % (stack.pop(), xxt))
# print('stack.pop:%s,xxt:%s' % (stack.pop(), xxt)) #IndexError: pop from empty list '''结果
stack.push66: [66]
stack.push13: [66, 13]
stack.pop:13,xxt:[1, 2, 3, 'a', 'b', 'c']
stack.pop:66,xxt:[1, 2, 3, 'a', 'b', 'c']
'''
三、栈的相关概念:
栈顶与栈底:允许元素插入与删除的一端称为栈顶,另一端称为栈底。
压栈:栈的插入操作,叫做进栈,也称压栈、入栈,通常命名为push。
弹栈:栈的删除操作,也叫做出栈,通常命名为pop。
OCP培训说明连接:https://mp.weixin.qq.com/s/2cymJ4xiBPtTaHu16HkiuA
OCM培训说明连接:https://mp.weixin.qq.com/s/7-R6Cz8RcJKduVv6YlAxJA
小婷儿的python正在成长中,其中还有很多不足之处,随着学习和工作的深入,会对以往的博客内容逐步改进和完善哒。
重要的事多做几遍。。。。。。
python 数据结构 - 栈的更多相关文章
- Python数据结构———栈
线性数据结构 当添加一个项目时,它就被放在这样一个位置:在之前存在的项与后来要加入的项之间.像这样的数据集合常被称为线性数据结构. 栈 栈是一个项的有序集合.添加项和移除项都发生在同一“端”,这一端通 ...
- Python数据结构——栈
栈是一种特殊的列表,栈内的元素只能通过列表的一端访问,这一端称为栈顶.栈被称为一种后入先出(LIFO,last-in-first-out)的数据结构. 由于栈具有后入先出的特点,所以任何不在栈顶的元素 ...
- Python数据结构——栈的链表实现
自定义链表实现栈的数据结构,代码如下: class Stack: def __init__(self): self._first = None def push(self,item): self._f ...
- Python数据结构——栈的列表实现
用Python内置的列表(list)实现栈,代码如下: import os os.chdir("E:\\Python_temp") class Stack: def __init_ ...
- Python数据结构——栈、队列的实现(二)
1. 一个列表实现两个栈 class Twostacks(object): def __init__(self): self.stack=[] self.a_size=0 self.b_size=0 ...
- Python数据结构——栈、队列的实现(一)
1. 栈 栈(Stack)是限制插入和删除操作只能在一个位置进行的表,该位置是表的末端,称为栈的顶(top).栈的基本操作有PUSH(入栈)和POP(出栈).栈又被称为LIFO(后入先出)表. 1.1 ...
- python数据结构之栈与队列
python数据结构之栈与队列 用list实现堆栈stack 堆栈:后进先出 如何进?用append 如何出?用pop() >>> >>> stack = [3, ...
- python数据结构-数组/列表/栈/队列及实现
首先 我们要分清楚一些概念和他们之间的关系 数组(array) 表(list) 链表(linked list) 数组链表(array list) 队列(queue) 栈(stack) li ...
- [adt]python实现栈-体验数据结构
经常使用py的一些数据结构,如list,及list的一些方法. 还有hash表等. 各类数据结构方法用的很6,然而不知道是底层是怎么实现的. 基于此,就开始研究一下py实现一些数据结构, 以便于对计算 ...
随机推荐
- 迭代器模式(Iterator)
1.概念 迭代器模式提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部表示,属于行为模式的一种 2.模式结构 抽象迭代器(Iterator):此抽象角色定义出遍历元素所需的接口 具体 ...
- java设计模式-----12、外观模式
Facade模式也叫外观模式,是由GoF提出的23种设计模式中的一种.Facade模式为一组具有类似功能的类群,比如类库,子系统等等,提供一个一致的简单的界面.这个一致的简单的界面被称作facade. ...
- CSS-高度塌陷问题
目录 CSS-高度塌陷问题 表现 产生的原因 高度塌陷的解决办法: BFC相关 CSS-高度塌陷问题 表现 例如: HTML: <div class="first"> ...
- 关于vue,webpack 中 “exports is not defined”报错
vue项目npm run dev 后项目报错 : 提示 “exports is not defined”. 导致这个问题是因为balbel的配置文件.babelrc的问题: { "prese ...
- MySQL and Sql Server:Getting metadata using sql script (SQL-92 standard)
MySQL: use sakila; -- show fields from table_name; -- show keys from table_name; SELECT `REFERENCED_ ...
- 自封装node 的简单增删改查
1 首先引入的上篇node 链接mysql 里面的js var connect = require('./nodemysql.js'); 2 定义常量 const customerSQL = { qu ...
- 基于 node 搭建博客系统(一)
系统分为两端,分别实现. 管理员端: 功能 :个人信息,设置,发布随笔,随笔列表,删除随笔,查找,文章 等. 技术点:Boostrap + AdminLTE; 基于nodejs 实现的express ...
- ASP.NET MVC从请求到响应发生了什么
*过程描述 当浏览器发出一个http请求后,该请求被UrlRoutingModule截获,UrlRoutingModule根据请求上下文去系统路由表(RouteTable)中匹配,从中获取一个Rout ...
- FUSE 用户空间文件系统 (Filesystem in Userspace)
FUSE 仓库 Wiki FUSE 性能评测 关于Fuse文件系统: FUSE (Filesystem in Userspace) is an interface for userspace prog ...
- centos7执行umount提示:device is busy或者target is busy解决方法
问题描述: 因为挂载错了,想取消挂载,但是umount报告如下错误: [root@zabbix /]# umount /dev/sdc1 umount: /data1: target is busy. ...