栈:是一种先进后出的数据结构;本片文章,我们用python的面向对象来构造这样的数据结构。

栈中的每一个数据除了存储当前的数值外,还存储着当前数值下一个数据的类型(注意不是下一个数据的数值)。

class Node(object):  # 栈中的每一个结点有两个属性,一个是当前的数值,另一个是下一个节点的值。
def __init__(self,value=None):
self.value = value
self.next = 0 class stack(object):
def __init__(self):
self.node = Node()
self.lstack = [self.node, ] def push(self,elem): # 定义入栈的函数
oldnode = self.lstack[0]
item = Node(elem) # 把这个数值实例化为栈中的数据类型
if oldnode.value == None: # 如果是第一个值,则当前value为当前值,next值为0; 这里的第一个值是要放入栈底的,因此它的next值W为0!
item.value = elem
item.next = 0
else:
item.value = elem # 如果不是第一个值,则当前值为当前值,next值为紧邻的那个值的数据类型,
item.next = oldnode
self.lstack.append(item) # 把新的数据节点加入到lstack列表
self.lstack.pop(0) # 然后去除列表中的上一次的数据节点,最后一个节点加入之后,lstack列表中存储的就是最上面的那个节点类型。 def popitem(self): # 定义出栈的函数
upnode = self.lstack[0]
print(upnode.value)
self.lstack.append(upnode.next)
self.lstack.pop(0)

向栈中压入三个数值:

#压入元素
s = stack()
s.push("A")
s.push("B")
s.push("C")
#取出元素
s.popitem()
s.popitem()
s.popitem() ---------------执行结果---------------C
B
A

python构造栈结构的更多相关文章

  1. C语言实现使用动态数组来构造栈结构

    我在面前一篇博客<C语言实现使用静态数组来构造栈结构>中使用了静态数组来模拟栈的操作.静态数组的大小是在代码中写死的.是存储在用户栈上面的,使用起来不灵活.在这篇博客中我会使用动态数组来构 ...

  2. python实现栈结构

    # -*- coding:utf-8 -*- # __author__ :kusy # __content__:文件说明 # __date__:2018/9/30 17:28 class MyStac ...

  3. python 全栈开发,Day98(路飞学城背景,django ContentType组件,表结构讲解)

    昨日内容回顾 1. 为什么要做前后端分离? - 前后端交给不同的人来编写,职责划分明确. - API (IOS,安卓,PC,微信小程序...) - vue.js等框架编写前端时,会比之前写jQuery ...

  4. Python全栈之路目录结构

    基础 1.Python全栈之路-----基础篇 2.Python全栈之路---运算符与基本的数据结构 3.Python全栈之路3--set集合--三元运算--深浅拷贝--初识函数 4.Python全栈 ...

  5. Python全栈开发【面向对象】

    Python全栈开发[面向对象] 本节内容: 三大编程范式 面向对象设计与面向对象编程 类和对象 静态属性.类方法.静态方法 类组合 继承 多态 封装 三大编程范式 三大编程范式: 1.面向过程编程 ...

  6. python 全栈开发之路 day1

    python 全栈开发之路 day1   本节内容 计算机发展介绍 计算机硬件组成 计算机基本原理 计算机 计算机(computer)俗称电脑,是一种用于高速计算的电子计算机器,可以进行数值计算,又可 ...

  7. Python全栈【异常处理】

    Python全栈[异常处理] 本节内容: 1.异常处理 2.什么时候用异常处理 异常处理 1.异常处理: 异常就是程序运行时发生错误的信号,异常处理是在编程过程中为了增加友好性,在程序出现bug时一般 ...

  8. Python全栈开发【模块】

    Python全栈开发[模块] 本节内容: 模块介绍 time random os sys json & picle shelve XML hashlib ConfigParser loggin ...

  9. Python全栈开发【基础四】

    Python全栈开发[基础四] 本节内容: 匿名函数(lambda) 函数式编程(map,filter,reduce) 文件处理 迭代器 三元表达式 列表解析与生成器表达式 生成器 匿名函数 lamb ...

随机推荐

  1. php base64转图片

    1.解析base64数据成图片 The problem is that data:image/bmp;base64, is included in the encoded contents. This ...

  2. 如何搭建SoC项目的基本Testbench【zz】

    原文地址:http://bbs.eetop.cn/thread-442797-1-8.html 写这个文档的目的是让大家对搭建SoC项目的Testbench有一个比较清晰的认识,可以根据这个文档来一步 ...

  3. JavaScript之prototype对象

    简述prototype: 在js中,每个构造函数都有一个原型属性prototype,因为这个属性的值通常是一个对象,又叫原型对象!你不需要显式的去定义原型对象,因为每个构造函数都会一个原型属性,通常在 ...

  4. 浙江工业大学校赛 小M和天平

    小M和天平 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Subm ...

  5. Mapreduce 原理及程序分析

    1.MapReduce(Map+Reduce) 提出一个问题: 目标:你想数出一摞牌中有多少张黑桃. 直观方式:一张一张检查并且数出有多少张是黑桃数目 MapReduce方法则是: 给在座的所有玩家中 ...

  6. google kaptcha 验证码的使用

    这边演示下idea+maven+servlet实现谷歌的kaptcha验证码的使用: web.xml, 这边主要是kaptcha验证器, <!DOCTYPE web-app PUBLIC &qu ...

  7. 食物链--poj1182(并查集含有关系)

    http://poj.org/problem?id=1182   题意应该就不用说了  再次回到食物链这道题,自己写了一遍,一直wa...原因竟然是不能用多实例,我也是醉了,但是我真的彻底的理解了,那 ...

  8. Python描述器引导(转)

    原文:http://pyzh.readthedocs.io/en/latest/Descriptor-HOW-TO-Guide.html 1. Python描述器引导(翻译) 作者: Raymond ...

  9. scp sparkuser@spark02:/home/sparkuser/.ssh

    文件计算机传送 命令格式:{scp}  {计算机用户}@{计算机网络名称}:{目标计算机路径} scp sparkuser@spark02:/home/sparkuser/.ssh

  10. html+css小总结

    html+css小总结 1.块级元素 <div> <h1> <hr /> <p> <pre> <ol> <ul> & ...