算法_栈
语言描述:
先进后出
由如下构成:
1个实例属性 top
3个实例方法:
1)进栈push()
2)出栈pop()
3)获取栈顶元素peek()
4)获取栈底元素bottom()
# encoding=utf-8 class Node(object):#出栈入栈基于什么节点去做的,定义Node def __init__(self, var): self.var = var self.next = None#next指针初始值为None class Stack(object):#定义栈 def __init__(self):#实例属性 top-栈顶元素 self.top = None #top指针初始值为None def push(self,var):#实例方法进栈 #进栈时当前Node节点的next指针需指向原top节点,然后把top指针指向新入栈的元素 if var != None: packNode = Node(var) packNode.next = self.top self.top = packNode return packNode.var else: return None def pop(self):#实例方法出栈;pop方法对top属性实现了一个封装 if self.top == None: return None else: tmp = self.top.var#栈顶元素是要出栈的元素,栈顶元素的值赋到tmp里 self.top = self.top.next#top指针指向原top节点的下一元素 return tmp#然后做返回 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#当循环结束时next指针就指向最底一个节点 return node.var if __name__ == '__main__': s = Stack() nodeList = [1,4,5,2,3]#进栈1,4,5,2,3 for i in nodeList: s.push(i) for i in xrange(3):#之后出栈3个节点 s.pop() print s.peek()#使用peek方法返回栈顶节点的值 print s.bottom()#打印栈底元素的值
大圣此去欲何?踏南天,碎凌霄!若大圣此去不返……?便一去不返!
浙公网安备 33010602011771号