编程语言
首页 > 编程语言> > python 顺序栈及基本操作

python 顺序栈及基本操作

作者:互联网

顺序栈

顺序栈,即用顺序表实现栈存储结构。通过前面的学习我们知道,使用栈存储结构操作数据元素必须遵守 “先进后出” 的原则,本节就 “如何使用顺序表模拟栈以及实现对栈中数据的基本操作(出栈和入栈)” 给大家做详细介绍。

如果你仔细观察顺序表(底层实现是数组)和栈结构就会发现,它们存储数据的方式高度相似,只不过栈对数据的存取过程有特殊的限制,而顺序表没有。
在这里插入图片描述
通过图 1 和图 2 的对比不难看出,使用顺序表模拟栈结构很简单,只需要将数据从 a 数组下标为 0 的位置依次存储即可。
从数组下标为 0 的模拟栈存储数据是常用的方法,从其他数组下标处存储数据也完全可以,这里只是为了方便初学者理解。

了解了顺序表模拟栈存储数据后,接下来看如何模拟栈中元素出栈的操作。由于栈对存储元素出栈的次序有"先进后出"的要求,如果想将图 1 中存储的元素 1 从栈中取出,需先将元素 4、元素 3 和元素 2 依次从栈中取出。

这里给出使用顺序表模拟栈存储结构常用的实现思路,即在顺序表中设定一个实时指向栈顶元素的变量(一般命名为 top),top 初始值为 -1,表示栈中没有存储任何数据元素,及栈是"空栈"。一旦有数据元素进栈,则 top 就做 +1 操作;反之,如果数据元素出栈,top 就做 -1 操作。

顺序栈元素入栈

在这里插入图片描述
因此,python语言实现代码为:

stack = list()
top = -1

def push(val):
    stack.append(val)
    top += 1
    return stack[top]

顺序元素的出栈

其实,top变量的设置对模拟数据的入栈操作没有实际的帮助,他是为实现数据的出栈操作做准备的。
在这里插入图片描述
元素4和元素3全部出栈后,元素2才能出栈。代码实现为:


def pop():
	if top == -1: # 如果top=-1 直接return -1
	    return -1
    result = stack.pop() # 出栈 
    top -= 1  # top -= 1
    return result # 返回出栈的元素

总结

通过学习顺序表模拟栈中数据入栈和出栈的操作,初学者完成了对顺序栈的学习,这里给出顺序栈对数据基本操作的python代码:

class Stack:
    def __init__(self):
        self.stack = list()
        self.top = -1
        
    def push(self, val):
        self.stack.append(val)
        self.top += 1
        return self.stack[self.top]
    
    def pop(self):
        if self.stack == -1:
            return -1
        result = self.stack.pop()
        self.top -= 1
        return result

标签:顺序,出栈,python,top,元素,stack,栈及,基本操作,self
来源: https://blog.csdn.net/python_tian/article/details/121606178