两个栈构成一个队列------list.pop()#先进后出的效果

本文详细解析了栈和队列这两种基本数据结构的概念,以及如何利用Python的list来实现队列的功能,通过两个list分别模拟队列的入队和出队操作,确保先进先出的原则。

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

首先核心是要理解
什么是栈(stack)
什么是队列 (queue)

栈的的话,堆叠之意,所以都是从顶部拿出来的,在上面的后进来,但是会先出去。
队列,排过队都知道,先到先得,所以排第一位的肯定先走

两个的话,栈构成队列的话。要把握核心我们是要做一个队列,所以push进去的,和pop出来就不应该一样的,不是你push了啥就先出来啥,那么就是栈了。

如果用python实现的话,我们会使用list。重点的地方出来了,list其实和栈很像,所以我们用了list 其实已经有了栈的push 和pop了。
list.pop()#先进后出的效果
那么实现代码如下:
首先先给这个队列的函数,定义两个list 也就是两个栈的意思,然后push的话刚刚说了栈的push 和list 的很像所以直接用了append。那么一个是栈是用来进来的。另一个栈是用来出来的。这样可以构成队列的功能。一个栈用来进来,另一个栈用来将这个栈的输出作为输入,这样顶部的就会被放到最下面。然后我们再输出,这样刚刚那个栈的底部的就会跑到顶部。 但是要注意一个点:如果pop的时候里面有东西的话,我们是不能往里面加的,这样会导致这个作为队列pop的功能的栈,先进后出了,所以我们要做个判断,再pop之前先看看是否为空,如果不为空先把里面的pop出来,如果为空了我们再添加,然后添加前先看看之前的是否为空。

class Solution:
    def __init__(self):
        self.stack1=[]
        self.stack2=[]
    def push(self, node):
        # write code here
        self.stack1.append(node)                         
    def pop(self):
        if self.stack2==[]: #使用pop前看看是否为空,不为空就直接pop出来
            while self.stack1: #如果为空就将刚刚stack1里面的先push进来,全部都push进来,然后再pop出去。
            return self.stack2.pop()
        return self.stack2.pop()                             
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值