一、栈

栈(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 栈的介绍相关推荐

  1. 【数据结构】栈的介绍

    参考资料:<数据结构(C语言版)严蔚敏著> 版权说明:未经作者允许,禁止转载.如引用本文内容,需标明作者及出处.如本文侵犯了您的权益,请联系我删除并致歉. 文章说明:如文章中出现错误,请联 ...

  2. [数据结构] python 栈解决迷宫问题

    例:给一个二维列表(如图所示),表示迷宫(0表示通道,1表示围墙).给出算法,求一条走出迷宫的路径. 栈--深度优先搜索(回溯法) 思路:使用栈存储当前路径.从一个节点开始,任意找下一个能走的点,当找 ...

  3. 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 ...

  4. php+spl+栈,PHP SPL标准库之数据结构栈(SplStack)介绍

    PHP SPL标准库之数据结构栈(SplStack)介绍2020-06-13 22:01:42 栈(Stack)是一种特殊的线性表,因为它只能在线性表的一端进行插入或删除元素(即进栈和出栈) SplS ...

  5. 数据结构之 栈 (Python 版)

    数据结构之 栈 (Python 版) -- 利用线性表实现栈 栈的特性: 后进先出 基于顺序表实现栈 1 class SStack(): 2 3 ''' 4 基于顺序表 实现的 栈类 5 ''' 6 ...

  6. Python内置四大数据结构之字典的介绍及实践案例

    Python字典的介绍及实践案例 一.字典(Dict)介绍 字典是Python内置的四大数据结构之一,是一种可变的容器模型,该容器中存放的对象是一系列以(key:value)构成的键值对.其中键值对的 ...

  7. 【数据结构】栈、队列、堆的python实现

    [数据结构]栈.队列.堆的python实现 一.栈的python实现 1.1.栈的列表实现方法 1.2.用双向队列模拟栈 二.队列的python实现 2.1.队列的列表实现 2.2.使用deque实现 ...

  8. 【数据结构与算法】栈的介绍及基本运算(出栈、入栈、销毁栈等)

    一.栈的介绍 栈(Stack)是限定只能在表的一端进行插入和删除操作的线性表. 允许插入和删除运算的一端称作栈顶(top). 不允许插入和删除的另一端称作栈底(bottom). 在栈顶进行的插入操作称 ...

  9. Python字节码介绍

    了解 Python 字节码是什么,Python 如何使用它来执行你的代码,以及知道它是如何帮到你的. 如果你曾经编写过 Python,或者只是使用过 Python,你或许经常会看到 Python 源代 ...

最新文章

  1. js倒计时代码最简单的_32个史上最有用的js代码
  2. python新手教程 从零开始-Python零基础从零开始学习Python十分钟快速入门
  3. 40.简述操作系统中调用过程?
  4. 聊聊高并发(十七)解析java.util.concurrent各个组件(一) 了解sun.misc.Unsafe类
  5. 强化学习案例_强化学习实践案例!携程如何利用强化学习提高酒店推荐排序质量...
  6. 中信银行MySQL面试_【中信银行信用卡中心面试|面试题】-看准网
  7. php 通过ip获取省份,通过IP获取用户地理位置省份城市的接口使用
  8. 5个理由告诉你为什么用NAS网络存储
  9. In library(package, lib.loc = lib.loc,character.only = TRUE, there is no package called ‘kknn’
  10. 12个可以免费自学编程的网站
  11. 【美影】通灵男孩诺曼.Paranorman
  12. 2019牛客暑期多校训练营(第九场) F Birthday Reminders(dp)
  13. 人像图片Relight
  14. 人力资源如何进行数据分析
  15. RK3399 GT1X触摸屏驱动调试笔记
  16. LSTM 长短期记忆神经网络及股票预测实现
  17. 使用cmd命令修改IP地址
  18. 华工高级语言程序设计c十十作业,华工高级语言程序设计c随堂练习答案
  19. Hibernate: Duplicate entry for key错误排查
  20. 企业如何打造团队凝聚力培训PPT课件?

热门文章

  1. Javascript核心技术的基础语法
  2. HTML5实用知识点
  3. jq实现页面滚动thead固定在顶部,仅tbody滚动
  4. 钙、磷、镁代谢与微量元素题库【1】
  5. 全息投影技术,沉浸式全息投影,裸眼3D解决方案
  6. Vue高级篇--实现前后端完全分离
  7. Python3.7+selenium+sqlite3爬虫
  8. 利用Python来给老照片上色,效果惊艳到我了。这不比ps强啊?
  9. 单例模式实现雪花算法
  10. js数组去重组成新的数组