- Python算法详解
- 张玲玲
- 469字
- 2020-06-27 17:50:52
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()