栈作为一种数据结构,是一种只能在一端进行插入和删除操作。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)
定义一个实例属性 top
三个实例属性:
- 栈顶元素peek()
- 出桟pop()
- 入栈push()
# encoding=utf-8
class Node(object):
def __init__(self,val):
self.val = val
self.next = None
class Stack(object):
def __init__(self):
self.top = None
#入栈
def push(self,n):
packNode = Node(n)
packNode.next = self.top
self.top = packNode
return packNode.val
#出栈
def pop(self):
if self.top == None:
return None
else:
tmp = self.top.val
self.top = self.top.next
return tmp
#栈顶元素
def peek(self):
if self.top == None:
return None
else:
return self.top.val
#可以增加一个统计的长度
if __name__ == '__main__':
s = Stack()
s.push(1)
s.push(2)
s.push(3)
print (s.pop())
print (s.pop())
print (s.pop())
print (s.pop())