两个栈来实现一个队列,完成队列的Push和Pop操作

本文介绍了一种使用两个栈来实现队列的方法,通过将元素首先压入第一个栈,然后弹出并压入第二个栈,最后从第二个栈中弹出元素,实现了队列的先进先出特性。在进行pop操作时,需检查第二个栈是否为空,若空则将第一个栈的所有元素转移过来。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2.用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型

1,整体思路是元素先依次进入栈1,再从栈1依次弹出到栈2,然后弹出栈2顶部的元素,整个过程就是一个队列的先进先出

在pop时候,要注意判断,判断栈2是否为空,如果栈2为空,判断栈1是否为空,如果栈1也为空则返回None,否则将栈1中的所有元素都弹到栈2,记住一定要是全部因为要维护入队的先后状态。

# -*- coding:utf-8 -*-

class Solution:

    def __init__(self):

        self.stackA = []

        self.stackB = []

    def push(self, node):

        # write code here

        self.stackA.append(node)

    def pop(self):

        # return xx

        if self.stackB:

            return self.stackB.pop()

        elif not self.stackA:

            return None

        else:

            while self.stackA:

                self.stackB.append(self.stackA.pop())

            return self.stackB.pop()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值