栈(stack),有些地方称为堆栈,是一种容器,可存入数据元素、访问元素、删除元素,它的特点在于只能允许在容器的一端(称为栈顶端指标,英语:top)进行加入数据(英语:push)和输出数据(英语:pop)的运算。没有了位置概念,保证任何时候可以访问、删除的元素都是此前最后存入的那个元素,确定了一种默认的访问顺序。

由于栈数据结构只允许在一端进行操作,因而按照后进先出(LIFO, Last In First Out)的原理运作。

1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。

2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。

3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 - 程序结束后有系统释放 。。

4、文字常量区—常量字符串就是放在这里的。 程序结束后由系统释放。

5、程序代码区—存放函数体的二进制代码。

不懂可以参考下面的文献

堆和栈的区别

什么是堆和栈,它们在哪儿?–堆栈

栈结构实现
栈可以用顺序表实现,也可以用链表实现。

栈的操作

  • Stack() 创建一个新的空栈
  • push(item) 添加一个新的元素item到栈顶
  • pop() 弹出栈顶元素
  • peek() 返回栈顶元素
  • is_empty() 判断栈是否为空
  • size() 返回栈的元素个数

用程序实现的如下

class Stack(object):"""栈"""def __init__(self):self.items = []def is_empty(self):"""判断是否为空"""return self.items == []def push(self, item):"""加入元素"""self.items.append(item)def pop(self):"""弹出元素"""return self.items.pop()def peek(self):"""返回栈顶元素"""return self.items[len(self.items)-1]def size(self):"""返回栈的大小"""return len(self.items)
if __name__ == "__main__":stack = Stack()stack.push("hello")stack.push("world")stack.push("itcast")print stack.size()print stack.peek()print stack.pop()print stack.pop()print stack.pop()

如何有任何问题,可以关注我的微信公众号:乐享python编程,我们可以一起沟通交流学习成长!!!

python中的堆栈相关推荐

  1. python 中的堆栈 用列表实现

    利用python中列表的方法实现数据结构中堆栈的"后进先出"的性质 列表方法使得列表可以很方便的作为一个堆栈来使用,堆栈作为特定的数据结构,最先进入的元素最后一个被释放(后进先出) ...

  2. python堆栈跟踪_什么是python中的堆栈跟踪?

    堆栈回溯显示程序运行中某个点的调用堆栈的状态.实际上,当程序中发生错误时,您通常会遇到这些问题. 所述调用栈是栈帧的堆叠(或列表).每个堆栈帧对应于子进程的调用(在Python中,函数或[list] ...

  3. 万能的list列表,python中的堆栈、队列实现全靠它

    在python编程中很多的数据计算都需要依靠列表来实现,比如Java编程中的堆栈结构/队列结构也可以通过list列表实现的. [阅读全文] 1.将列表当做堆栈来使用 堆栈数据结构实现的思想就是:'先进 ...

  4. python元祖迭代_如何在Python中迭代元组的堆栈

    我尝试在Python中使用预定义为的DepthFirstSearch类实现DepthFirstSearch算法:class Stack: def __init__(self): self.list = ...

  5. python中pop函数_Python中的Pop函数

    python中pop函数 什么是弹出功能? (What is the pop function?) The method pop() removes and returns the last elem ...

  6. Python中的数据结构

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:磐创AI 概述 在深入研究数据科学和模型构建之前,Pyt ...

  7. 如何在Python中反转列表?

    如何在Python中执行以下操作? array = [0, 10, 20, 40] for (i = array.length() - 1; i >= 0; i--) 我需要一个数组的元素,但是 ...

  8. python中关于list列表的增删查改操作

    python中list的操#python创建列表的时候,会以堆栈的形式存放数据,从右向左往堆栈中存放数据 movies=["The holy Grail","The li ...

  9. python中迭代器的实现原理_Python 进阶应用教程

    Python 中的迭代器实现原理 在数学中,集合表示由一个或多个确定的元素所构成的整体.在 Python 中,列表.元组.集合可以用于表示数学中的集合. 例如,分别使用列表.元组.集合表示了一个包含 ...

最新文章

  1. vue实现多个元素或多个组件之间动画效果
  2. 魔改Attention大集合
  3. jsonp跨域实现单点登录,跨域传递用户信息以及保存cookie注意事项
  4. 清华大学微纳脑机接口与机器人实验室:生物材料研发工程师招聘
  5. iPhone开源项目汇总(更新版)
  6. Concurrent集合 Atomic类
  7. Remarkable启动遇到Spellchecking not enabled(没有解决)
  8. matlab怎让3d旋转,如何在MATLAB中平滑旋转3D绘图?
  9. 【机器学习】交叉验证筛选参数K值和weight
  10. java编程中的持有对方引用是什么意思?有什么作用?
  11. 揭秘ASP.NET 2.0之Page.Eval
  12. 【动手学深度学习】代码(持续更新)
  13. FreeTextBox3.1.6使用说明(整理)
  14. getting start with storm 翻译 第六章 part-4
  15. SpringBoot+Element-UI实现加载ActiveX控件
  16. 区块链开发以太坊ETH单位转换关系
  17. html在线随机出题系统,出题系统/考试模拟考试系统-在线系统
  18. 麻雀的叫声matlab文件,诱捕麻雀叫声mp3下载|
  19. wuauclt1.exe mshta.exe 病毒清理
  20. 全国高中数学联赛——代数

热门文章

  1. java 圆弧_从圆弧区域中寻找中心角
  2. 拼车小程序的盈利模式探究,以及快速有效的推广方法!【小程序创业干货】
  3. The rate shock 利率冲击 | 经济学人中英双语精读笔记
  4. 2019--3.10学习笔记
  5. 阿兰·麦席森·图灵(Alan Mathison Turing,1912.6.23—1954.6.7)
  6. Linux学习 邮件
  7. .NET实现工资管理系统
  8. 70道android面试题汇总
  9. 从苏宁电器到卡巴斯基第23篇:单证这一年(上)
  10. jenkins 安装 SVN Publisher 后向 svn 提交代码报错: E170001: Authentication required for...