栈:是一种先进后出的数据结构;本片文章,我们用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

最新文章

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

热门文章

  1. php小记
  2. Freetds 连接数据库问题
  3. informix数据库知识积累
  4. java 中形参与实参的转换
  5. R数据可视化手册学习简单的绘制常见的图形
  6. POJ 1149 - PIGS - [最大流构图]
  7. Crontab '2>&1 &' 含义
  8. 20144306《网络对抗》Web基础
  9. BigDecimal精度与相等比较的坑
  10. Borg Maze---poj3026最小生成树+bfs