一.栈结构引用场景介绍
栈是一种先进后出的数据结构,桟的应用场景非常多:
1、内存管理中使用的堆栈;
2、基于桟实现的二叉树的遍历;
3、在语言处理中,符号的平衡问题
二. python基于类和引用实现栈
在桟的设计中,我们需要定义一个实例属性top。三个实例方法:获取栈顶元素peek();出桟pop();入栈push()
具体实现代码如下:
# _*_ coding:utf-8 _*_
class Node:
def __init__(self, val):
self.val = val
self.next = None
def get_val(self):
return self.val
def get_next(self):
return self.next
def set_val(self, data):
self.val = data
def set_next(self, next_obj):
self.next = next_obj
class Stack(object):
def __init__(self):
self.top = None
def peek(self):
"""
获取栈顶的元素
:return:
"""
if self.top is not None:
return
else:
return None
def push(self, n):
"""
核心思想就是当前对象指向栈顶元素
1、入栈,obj.next=self.top 把入栈的节点,然后给一个top
top=obj
:param n:
:return:
"""
obj = Node(n)
obj.next = self.top
self.top = obj
return obj.val
def pop(self):
"""
2、出栈
1)是否是空栈,是的话,返回None
2)否则,返回top.value,并且top指向下一个节点
发现队列或栈其实都需要找到一个节点,需要找到你现在的位置
:return:
"""
if self.top is None:
return None
else:
tmp = self.top.val
self.top = self.top.next
return tmp
if __name__ == '__main__':
s = Stack()
s.push(1)
s.push(2)
s.push(3)
print(s.pop())
print(s.pop())
print(s.pop())