[数据结构] python 栈的介绍
一、栈
栈(Stack)是一个数据集合,可以理解为只能在一端进行插入或删除的列表。
栈的特点:后进先出LIFO(last-in,first-out)
栈的概念:栈顶(其实也就是列表最后一个元素位置)、栈底(列表第一个元素的位置)
栈的基本操作:
进栈(压栈):push
出栈:pop
取栈顶:gettop
(取栈顶也可认为:假如面前有一堆书,但是我只取最上面的那个看一眼,但是我不拿走)
二、栈的实现
使用一般的列表结构实现栈:
进栈:li.append
出栈:li.pop
取栈顶:li[-1]
以下代码将实现一个简单的栈结构:
class Stack:def __init__(self):self.stack = []#进栈def push(self, element):self.stack.append(element) # 在最后一个元素进栈#出栈 出栈的前提是:栈不能为空def pop(self):try:return self.stack.pop() # pop不加参数默认返回最后一个,在最后一个元素出栈except IndexError:print('stack is empty')#取栈顶 取栈顶的前提是:栈不能为空def gettop(self):if len(self.stack) > 0:return self.stack[-1]else:return None
以上写了两种处理报错的方法,处理报错的方法有很多,也可以用raise方法。
调用:
stack = Stack()
stack.push(1)
stack.push(2)
print(stack.pop())
print(stack.pop())
print(stack.pop())
返回:
2
1
None
栈的调用其实还有一种方法:
python中的collections模块,里面实现了许多常用的数据结构,collections.deque实现线程安全的双端队列,可以用它作为栈,也可以用它作为队列。
入栈为:deque.append(x)
出栈为:deque.pop(x)
关于deque的详情网页点击这里https://blog.csdn.net/qq_51148692/article/details/120394497?spm=1001.2014.3001.5501
以下代码将用deque作为栈示例:
from collections import deque
stack=deque() #初始化栈
stack.append(1) #从列表的右端(最后一个元素后)添加元素
stack.append(2)
stack.append(3)
print(stack.pop()) #从列表的右端(最后一个元素)弹出元素
print(stack.pop())
print(stack.pop())
输出为:
3
2
1
[数据结构] python 栈的介绍相关推荐
- 【数据结构】栈的介绍
参考资料:<数据结构(C语言版)严蔚敏著> 版权说明:未经作者允许,禁止转载.如引用本文内容,需标明作者及出处.如本文侵犯了您的权益,请联系我删除并致歉. 文章说明:如文章中出现错误,请联 ...
- [数据结构] python 栈解决迷宫问题
例:给一个二维列表(如图所示),表示迷宫(0表示通道,1表示围墙).给出算法,求一条走出迷宫的路径. 栈--深度优先搜索(回溯法) 思路:使用栈存储当前路径.从一个节点开始,任意找下一个能走的点,当找 ...
- python数据结构与算法分析 第2版_题库 | 百度数据结构 / 算法面试题型介绍及解析 第 2 期...
题目1:分解成质因数 (如 435234=251*17*17*3*2) void prim(int m, int n){ if(m>n){ while(m%n != 0) n++; m /= n ...
- php+spl+栈,PHP SPL标准库之数据结构栈(SplStack)介绍
PHP SPL标准库之数据结构栈(SplStack)介绍2020-06-13 22:01:42 栈(Stack)是一种特殊的线性表,因为它只能在线性表的一端进行插入或删除元素(即进栈和出栈) SplS ...
- 数据结构之 栈 (Python 版)
数据结构之 栈 (Python 版) -- 利用线性表实现栈 栈的特性: 后进先出 基于顺序表实现栈 1 class SStack(): 2 3 ''' 4 基于顺序表 实现的 栈类 5 ''' 6 ...
- Python内置四大数据结构之字典的介绍及实践案例
Python字典的介绍及实践案例 一.字典(Dict)介绍 字典是Python内置的四大数据结构之一,是一种可变的容器模型,该容器中存放的对象是一系列以(key:value)构成的键值对.其中键值对的 ...
- 【数据结构】栈、队列、堆的python实现
[数据结构]栈.队列.堆的python实现 一.栈的python实现 1.1.栈的列表实现方法 1.2.用双向队列模拟栈 二.队列的python实现 2.1.队列的列表实现 2.2.使用deque实现 ...
- 【数据结构与算法】栈的介绍及基本运算(出栈、入栈、销毁栈等)
一.栈的介绍 栈(Stack)是限定只能在表的一端进行插入和删除操作的线性表. 允许插入和删除运算的一端称作栈顶(top). 不允许插入和删除的另一端称作栈底(bottom). 在栈顶进行的插入操作称 ...
- Python字节码介绍
了解 Python 字节码是什么,Python 如何使用它来执行你的代码,以及知道它是如何帮到你的. 如果你曾经编写过 Python,或者只是使用过 Python,你或许经常会看到 Python 源代 ...
最新文章
- js倒计时代码最简单的_32个史上最有用的js代码
- python新手教程 从零开始-Python零基础从零开始学习Python十分钟快速入门
- 40.简述操作系统中调用过程?
- 聊聊高并发(十七)解析java.util.concurrent各个组件(一) 了解sun.misc.Unsafe类
- 强化学习案例_强化学习实践案例!携程如何利用强化学习提高酒店推荐排序质量...
- 中信银行MySQL面试_【中信银行信用卡中心面试|面试题】-看准网
- php 通过ip获取省份,通过IP获取用户地理位置省份城市的接口使用
- 5个理由告诉你为什么用NAS网络存储
- In library(package, lib.loc = lib.loc,character.only = TRUE, there is no package called ‘kknn’
- 12个可以免费自学编程的网站
- 【美影】通灵男孩诺曼.Paranorman
- 2019牛客暑期多校训练营(第九场) F	Birthday Reminders(dp)
- 人像图片Relight
- 人力资源如何进行数据分析
- RK3399 GT1X触摸屏驱动调试笔记
- LSTM 长短期记忆神经网络及股票预测实现
- 使用cmd命令修改IP地址
- 华工高级语言程序设计c十十作业,华工高级语言程序设计c随堂练习答案
- Hibernate: Duplicate entry for key错误排查
- 企业如何打造团队凝聚力培训PPT课件?