【python】列表模拟栈

在Python中,可以使用列表(list)来模拟栈(Stack)的行为。栈是一种后进先出(LIFO, Last In First Out)的数据结构,其中元素只能在一端添加(称为push)和移除(称为pop)。

栈的基本概念

  • 后进先出(LIFO):栈是一种遵循后进先出(Last In First Out)原则的数据结构。这意味着最后添加到栈中的元素将首先被移除。
  • 栈顶和栈底:栈有一个顶部(栈顶)和一个底部(栈底)。所有操作(如添加和移除元素)都在栈顶进行。
  • 基本操作
    • push(入栈):在栈顶添加一个元素。
    • pop(出栈):从栈顶移除一个元素,并返回该元素的值。
    • peek(查看栈顶):查看栈顶的元素,但不移除它。
    • is_empty(检查空栈):检查栈是否为空。
    • size(获取栈的大小):获取栈中元素的数量。

使用Python列表模拟栈

  1. 初始化栈

    • 使用Python的列表(list)来存储栈中的元素。列表的末尾将作为栈顶,因为列表的append()pop()方法都是在列表的末尾添加和移除元素的。
  2. 实现栈的基本操作

    • push(入栈):使用列表的append()方法将元素添加到列表的末尾(即栈顶)。
    • pop(出栈):使用列表的pop()方法从列表的末尾移除元素(即栈顶的元素),并返回该元素的值。如果栈为空,则抛出异常或返回None
    • peek(查看栈顶):使用列表的索引-1来访问列表的最后一个元素(即栈顶的元素),但不移除它。如果栈为空,则抛出异常或返回None
    • is_empty(检查空栈):检查列表是否为空,即是否没有元素。
    • size(获取栈的大小):使用Python的内置函数len()来获取列表的长度,即栈中元素的数量。
  3. 示例代码

class Stack:
    def __init__(self):
        self.items = []  # 初始化一个空列表作为栈

    def push(self, item):
        self.items.append(item)  # 使用append()方法将元素添加到栈顶

    def pop(self):
        if not self.is_empty():
            return self.items.pop()  # 使用pop()方法从栈顶移除元素并返回
        else:
            raise IndexError("pop from empty stack")  # 如果栈为空,则抛出异常

    def peek(self):
        if not self.is_empty():
            return self.items[-1]  # 使用索引-1访问栈顶元素
        else:
            raise IndexError("peek from empty stack")  # 如果栈为空,则抛出异常

    def is_empty(self):
        return len(self.items) == 0  # 使用len()函数检查栈是否为空

    def size(self):
        return len(self.items)  # 使用len()函数获取栈的大小

# 使用示例
s = Stack()
s.push("apple")
s.push("banana")
s.push("cherry")
print(s.peek())     # 输出: cherry
print(s.pop())      # 输出: cherry
print(s.size())     # 输出: 2
print(s.is_empty()) # 输出: False
  • 8
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值