python构造栈结构
栈:是一种先进后出的数据结构;本片文章,我们用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构造栈结构的更多相关文章
- C语言实现使用动态数组来构造栈结构
我在面前一篇博客<C语言实现使用静态数组来构造栈结构>中使用了静态数组来模拟栈的操作.静态数组的大小是在代码中写死的.是存储在用户栈上面的,使用起来不灵活.在这篇博客中我会使用动态数组来构 ...
- python实现栈结构
# -*- coding:utf-8 -*- # __author__ :kusy # __content__:文件说明 # __date__:2018/9/30 17:28 class MyStac ...
- python 全栈开发,Day98(路飞学城背景,django ContentType组件,表结构讲解)
昨日内容回顾 1. 为什么要做前后端分离? - 前后端交给不同的人来编写,职责划分明确. - API (IOS,安卓,PC,微信小程序...) - vue.js等框架编写前端时,会比之前写jQuery ...
- Python全栈之路目录结构
基础 1.Python全栈之路-----基础篇 2.Python全栈之路---运算符与基本的数据结构 3.Python全栈之路3--set集合--三元运算--深浅拷贝--初识函数 4.Python全栈 ...
- Python全栈开发【面向对象】
Python全栈开发[面向对象] 本节内容: 三大编程范式 面向对象设计与面向对象编程 类和对象 静态属性.类方法.静态方法 类组合 继承 多态 封装 三大编程范式 三大编程范式: 1.面向过程编程 ...
- python 全栈开发之路 day1
python 全栈开发之路 day1 本节内容 计算机发展介绍 计算机硬件组成 计算机基本原理 计算机 计算机(computer)俗称电脑,是一种用于高速计算的电子计算机器,可以进行数值计算,又可 ...
- Python全栈【异常处理】
Python全栈[异常处理] 本节内容: 1.异常处理 2.什么时候用异常处理 异常处理 1.异常处理: 异常就是程序运行时发生错误的信号,异常处理是在编程过程中为了增加友好性,在程序出现bug时一般 ...
- Python全栈开发【模块】
Python全栈开发[模块] 本节内容: 模块介绍 time random os sys json & picle shelve XML hashlib ConfigParser loggin ...
- Python全栈开发【基础四】
Python全栈开发[基础四] 本节内容: 匿名函数(lambda) 函数式编程(map,filter,reduce) 文件处理 迭代器 三元表达式 列表解析与生成器表达式 生成器 匿名函数 lamb ...
随机推荐
- CAT偶现NPE的问题
1.背景 我们公司的调用链系统是基于大众点评的CAT客户端改造的,服务端完全有自己设计开发的.在是用CAT客户端收集dubbo调用信息的时候,我们发现了一个CAT偶现NPE的bug,该bug隐藏的很深 ...
- POJ-2184 Cow Exhibition(01背包变形)
Cow Exhibition Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 10949 Accepted: 4344 Descr ...
- 2018-2019-2 20165330《网络对抗技术》Exp6 信息搜集与漏洞扫描
目录 基础问题 相关知识 实验目的 实验内容 实验步骤 实验总结与体会 实验目的 掌握信息搜集的最基础技能与常用工具的使用方法. 返回目录 实验内容 各种搜索技巧的应用 使用搜索引擎 搜索网址目录结构 ...
- tkinter 提示符
在python3.4中,原来的tkMessageBox变成tkinter.messagebox,使用方式如下: import tkinter.messagebox tkinter.messagebox ...
- iOS核心动画の摘记
- Guideline 2.1 - Information Needed
For information about testing your app and preparing it for review, please see Technical Note TN2431 ...
- MongoDB的”存储过程“
使用 db.system.js.insert({_id:"aaa", value:"zzq"}); 这条命令向全局系统的js中添加了一个_id为"aa ...
- Wireless Network--poj2236(并查集)
Description An earthquake takes place in Southeast Asia. The ACM (Asia Cooperated Medical team) have ...
- requests库的小技巧
#coding:utf-8 import requests # url = 'http://www.baidu.com' # response = requests.get(url) # print ...
- [py]python面向对象的str getattr特殊方法
本文旨在说清楚 类中的 def init def str def getattr 这三个方法怎么用的. 定制输入实例名时输出内容 def __str__会定制输出实例名时候的输出 class Chai ...