作者: GHope | 来源:发表于2018-11-12 18:59 被阅读3次

栈是一个后进先出(LIFO)的数据结构,其工作方式就像生活中常见到的直梯,先进去的人肯定是最后出。栈这个数据结构可以用于处理大部分具有后进先出的特性的程序流 。

在栈中, push 和 pop 是常用术语:
push: 意思是把一个对象入栈
pop: 意思是把一个对象出栈

我们可以设置一个类,用列表来存放栈中的元素的信息,利用列表的append()和pop()方法可以实现栈的出栈pop和入栈push的操作,list.append(obj)意思是向列表添加一个对象obj,list.pop(index=-1)意思是删除指定位置的对象,默认是最后一个对象,也就是说list.pop(),是删除列表中下标最大的元素。

Python代码实现

class Stack:
    """
    栈:先进后出
    """

    def __init__(self, max_size):
        self.max_size = max_size
        self.stack = []
        self.top = -1

    # 入栈
    def push(self, item):
        if self.full():
            raise Exception("stack is full")
        else:
            self.stack.append(item)
            self.top = self.top + 1

    # 出栈
    def pop(self):
        if self.empty():
            raise Exception("stack is empty")
        else:
            self.top = self.top - 1
            self.stack.pop()

    # 是否为空
    def empty(self):
        return self.top == -1

    # 是否已满
    def full(self):
        return self.top + 1 == self.max_size

    # 栈大小
    def size(self):
        return len(self.stack)

    # 根据下标获取目标
    def get(self, index):
        return self.stack[index]

    # 根据目标获取下标
    def index(self, item):
        return self.stack.index(item)

    # 显示栈内容
    def showStack(self):
        print(self.stack)


s = Stack(10)

for i in range(8):
    s.push(i)

# print(s.full())
# print(s.get(3))
# print(s.size())
# print(s.index(4))
print(s.showStack())

s.pop()

# print(s.size())
print(s.showStack())

相关文章

  • Java实现栈

    数组栈:压栈、出栈、返回栈顶元素 链式栈:压栈、出栈、返回栈顶元素

  • 数据结构之 栈

    栈结构 链式栈 一.栈结构体 1构建空栈 2栈置空 3判断栈空 4获取栈顶 5入栈 6出栈 7便利栈 二.链式栈 ...

  • 栈和队列

    1、栈 栈是一种先进先出的数据结构。栈顶进栈,栈顶出栈。 数据结构 栈的初始化 进栈 出栈 栈的最小值 2、队列 ...

  • 递归累加数组

    入栈 5入栈 4入栈 3入栈 2入栈 1出栈 [1 0]出栈 [2 1 0]出栈 [3 2 1 0]出栈 [4 3...

  • 栈的逻辑结构和存储结构

    main()进栈s(1)进栈s(0)进栈 s(0)出栈s(1)出栈main()出栈 顺序栈 一个数组 + 指向栈顶...

  • 单调栈 2020-06-12(未经允许,禁止转载)

    1.单调栈 指栈内元素保持单调性的栈结构,分为单调增栈(栈底到栈顶元素递增)和单调减栈(栈底到栈顶元素递减) 2....

  • 链栈的操作

    链栈的定义 链栈的操作 初始化 判断栈空 入栈 出栈

  • 函数调用栈平衡

    栈平衡 栈平衡:函数调用前后的栈顶指针指向的位置不变 内平栈 外平栈 内平栈: 指的是在函数调用返回之前使栈保持...

  • 栈的简单Java实现

    栈栈的特点是先进后出,出栈、入栈都是在栈顶操作。

  • 汇编学习-入栈和出栈

    栈有两个基本的操作:入栈和出栈。入栈就是将一个新的元素放到栈顶,出栈就是从栈顶取出一个元素。栈顶的元素总是最后入栈...

网友评论

    本文标题:

    本文链接:https://www.haomeiwen.com/subject/uubotqtx.html