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