Python算法详解
上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