4.4.2 顺序栈

顺序栈是栈的顺序存储结构的简称,是运算受限的顺序表。在此需要注意如下3点。

(1)顺序栈中的元素用向量存放。

(2)栈底位置是固定不变的,可以设置为向量两端的任意一个端点。

(3)栈顶位置是随着进栈和出栈操作而变化的,用整型变量top(通常称top为栈顶指针)指示当前栈顶位置。

1.顺序栈的基本操作

· 进栈操作

进栈时,需要将S->top加1。

注意:S->top==StackSize−1表示栈满,出现“上溢”现象,即当栈满时,再执行进栈运算会产生空间溢出的现象。上溢是一种出错状态,应设法避免。

· 出栈操作

在出栈时,需要将S->top减1。其中S->top<0表示这是一个空栈。当栈为空时,如果执行出栈运算,将会产生下溢现象。下溢是一种正常现象,常用作程序控制转移的条件。

2.顺序栈运算

· 使用Python判断栈是否为空的算法代码如下所示。

    # 判断栈是否为空,返回布尔值
    def is_empty(self):
         return self.items == []

· 使用Python返回栈顶元素的算法代码如下所示。

    def peek(self):
         return self.items[len(self.items) - 1]

· 使用Python返回栈大小的算法代码如下所示。

    def size(self):
         return len(self.items)

· 使用Python 把新的元素放进栈里面(也称为压栈、入栈或进栈)的算法代码如下所示。

    def push(self, item):
         self.items.append(item)

· 使用Python把栈顶元素弹出去(也称为出栈)的算法代码如下所示。

    def pop(self, item):
         return self.items.pop()