python 实现栈的基本操作

栈:是一个先入后出的有序列表  线性表。

栈的删除和插入只能在一端进行,允许插入和删除的一端为栈顶,另一端称为栈底

最先放进栈中的元素在栈顶,最先取出

Python 中的栈直接以列表为主,增加使用append(),出栈为pop()

实现栈的思路分析:

  1. 使用数组来记性模拟栈
  2. 定义一个top来代表栈顶,初始化-1
  3. 入栈的操作,当有数据加入的时候,top++,stack[top] = data
  4. 出栈的操作,value = stack[top] top— return value

class ArrayStack:
    def __init__(self,masSize):
        self.maxsize = masSize
        self.stack = []
        self.top = -1

    # 判断栈是不是 满的
    def isFull(self):
        return self.top == self.maxsize - 1

    # 判断栈是不是空的
    def isEmpty(self):
        return self.top == -1

    # 将数据压入栈中
    def push(self,value):
        if self.isFull():
            print("栈已经满了!")
            return
        self.top = self.top + 1
        self.stack.append(value)

    # 将栈中的数据进行删除
    def pop(self):
        if self.isEmpty():
            print("栈已经是空的了,没法执行出栈操作!")
            return
        value = self.stack.pop()
        self.top = self.top - 1
        return value

    # 显示栈的内容,需要先从栈顶显示数据
    def showStack(self):
        if self.isEmpty():
            print("栈已经是空的了,没法执行显示操作!")
            return
        i = self.top
        while i > -1:
            print("栈中存在的数据:",self.stack[i])
            i = i -1

if __name__ == '__main__':
    array = ArrayStack(5)
    print("栈的情况:",array.isEmpty())
    print("栈的情况:", array.isFull())
    array.push(2)
    array.push(3)
    array.push(4)
    array.push(5)
    array.push(6)
    #array.push(7)
    array.showStack()
    array.pop()
    array.showStack()

猜你喜欢

转载自blog.csdn.net/weixin_44911037/article/details/128117174