定义:

栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。

特性:后进先出

代码:

# encoding=utf-8

class Node(object):
def __init__(self, var):
self.var = var
self.next = None

class Stack(object):
def __init__(self):
self.top = None
#进栈的逻辑:top指向刚刚进来的数据,之前的数据成为top上一个数据
def push(self,var):
if var != None:
packNode = Node(var)
packNode.next = self.top
self.top = packNode
return packNode.var
else:
return None
#出栈的逻辑:打印栈顶元素,top指向下一位
def pop(self):
if self.top == None:
return None
else:
tmp = self.top.var
self.top = self.top.next
return tmp

#获取栈顶元素peek()
def peek(self):
if self.top == None:
return None
else:
return self.top.var

#写一个实例方法:获取栈底元素的值,并且在上一题的基础上,打印栈底元素的值,这个平时用不

到,只是为了加深对栈的理解。
def bottom(self):
if self.top == None:
return None
node = self.top
while node.next != None:
node = node.next
return node.var

#进栈1,4,5,2,3,之后出栈3个节点,使用peek方法返回栈顶节点的值
if __name__=='__main__':
s = Stack()
nodeList = [1,4,5,2,3]
for i in nodeList:
s.push(i)
for i in range(0,len(nodeList)-2):
s.pop()
print s.peek()
print s.bottom()

最新文章

  1. 【编程篇】C++11系列之——临时对象分析
  2. 为了解决mysqlbing翻译表字段问题而分析frm文件(持续更新)
  3. 表单 - Form - EasyUI提供的表单异步提交
  4. 使用Aspose.Cell控件实现多个Excel文件的合并
  5. ASP.NET Web API路由规
  6. C#生成缩略图代码
  7. 18、MySQL内存体系架构及参数总结
  8. [工具] XMind
  9. 5. JavaScript 正则表达式
  10. 201521123004《Java程序设计》第5周学习总结
  11. Python3 找不到库
  12. .NET 术语
  13. Lua中的迭代器与泛型for
  14. OJ:又一道考察多态的题目
  15. Cocos2d-x项目创建方式
  16. mui-当使用addeleventlisener()方法绑定事件时选择器无法绑定事件
  17. python2和python3 切换
  18. 洛谷4951 地震 bzoj1816扑克牌 洛谷3199最小圈 / 01分数规划
  19. 高通与MTK瓜分天下?手机处理器品牌分析
  20. IntelliJ IDEA2018.1、2017.3激活

热门文章

  1. PM2常用命令
  2. CImage访问像素及其像素操作总结
  3. jQuery和AJAX基础
  4. x-shell配置远程连接
  5. java 核心技术卷一笔记 6 .2接口 lambda 表达式 内部类
  6. java 核心技术卷一笔记 6 .1.接口 lambda 表达式 内部类
  7. caffe layer层cpp、cu调试经验和相互关系
  8. Python数据结构和类型--解压序列赋值多个变量
  9. 八 个优秀的 jQuery Mobile 教程
  10. c语言文件打开模式