python构造栈结构
2024-09-10 15:50:39
栈:是一种先进后出的数据结构;本片文章,我们用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
最新文章
- MFC中输入框的文本转换为char[]字符数组类型
- notepad++
- VS2013安装
- 《超级IP》:伪理论,没能比现有的市场营销理论更高明,只敢勉强去解释已经发生的事情,不敢去预测未来。2星。
- Mysql 调用存储过程的两种方式
- Android之hint提示字体大小修改,显示完全
- AngularJs自定义指令详解(1) - restrict
- URAL1049. Brave Balloonists
- Nginx + Tomcat 动静分离实现负载均衡
- Activity内部Handler引起内存泄露的原因分析
- cocos2d-x核心基础类
- 在ASP.NET Core Web API中为RESTful服务增加对HAL的支持
- 微信公众号开发C#系列-8、自定义菜单及菜单响应事件的处理
- SecureCRT连接linux步骤
- 多次使用图片物理路径提示占用进程,用流读取设置FileShare权限解决
- RPC服务和HTTP服务对比
- 2、Keepalived提供日志与双主模型演示
- 以太坊 web3.js 文档翻译及说明
- nginx安装扩展 sub_filter&;http_ssl_module
- hdu-2795(线段树的简单应用)