栈:是一种先进后出的数据结构;本片文章,我们用python的面向对象来构造这样的数据结构。
栈中的每一个数据除了存储当前的数值外,还存储着当前数值下一个数据的类型(注意不是下一个数据的数值)。
class Node(object): # 栈中的每一个结点有两个属性,一个是当前的数值,另一个是下一个节点的值。def __init__(self,value=None):self.value = valueself.next = 0class stack(object):def __init__(self):self.node = Node()self.lstack = [self.node, ]def push(self,elem): # 定义入栈的函数oldnode = self.lstack[0]item = Node(elem) # 把这个数值实例化为栈中的数据类型if oldnode.value == None: # 如果是第一个值,则当前value为当前值,next值为0; 这里的第一个值是要放入栈底的,因此它的next值W为0!item.value = elemitem.next = 0 else:item.value = elem # 如果不是第一个值,则当前值为当前值,next值为紧邻的那个值的数据类型,item.next = oldnodeself.lstack.append(item) # 把新的数据节点加入到lstack列表self.lstack.pop(0) # 然后去除列表中的上一次的数据节点,最后一个节点加入之后,lstack列表中存储的就是最上面的那个节点类型。def popitem(self): # 定义出栈的函数upnode = self.lstack[0]print(upnode.value)self.lstack.append(upnode.next)self.lstack.pop(0)
向栈中压入三个数值:
#压入元素 s = stack() s.push("A") s.push("B") s.push("C") #取出元素 s.popitem() s.popitem() s.popitem()---------------执行结果---------------C B A