上QQ阅读APP看书,第一时间看更新
4.4.3 链栈
链栈是指栈的链式存储结构,是没有附加头节点的、运算受限的单链表,栈顶指针是链表的头指针。在推行链栈操作时需要注意如下两点。
(1)定义LinkStack结构类型是为了更便于在函数体中修改指针top。
(2)如果要记录栈中元素个数,可以将元素的各个属性放在LinkStack类型中定义。
常用的链栈操作运算有4种,具体说明如下。
· 使用Python判断链栈是否为空的算法代码如下所示。
def is_empty(self): return self._top is None
· 使用Python返回栈顶元素的算法代码如下所示。
def top(self): if self.is_empty(): raise StackUnderflow("in LStack.top()") return self._top.elem
· 使用Python把新的元素放进栈里面的算法代码如下所示。
def push(self, elem): self._top = Node(elem, self._top)
· 使用Python把栈顶元素弹出去(也称为出栈)的算法代码如下所示。
def pop(self): if self.is_empty(): raise StackUnderflow("in LStack.pop()") result = self._top.elem self._top = self._top.next return result