python使用两个栈实现队列

本文详细阐述了如何利用两个栈的数据结构,通过模拟操作实现队列的入队和出队功能,特别强调了如何保持先进先出的特性,以及用Python实现了一个简单的Queue类。
摘要由CSDN通过智能技术生成

这里主要是使用两个栈来实现一个队列,并实现队列的入队和出队函数。

对于一个单词hello,如果正常情况下按照队列中先进先出的特点,会按照hello的顺序入队,同样也会按照hello的顺序出队。

添加图片注释,不超过 140 字(可选)

因此如果想要利用两个栈来形成队列,就要将后进先出的结构特点改造成先进先出,将队列的入队和出队两个过程分开来进行处理,栈的入栈和队列的入队其实是差别不大的,只是出栈和出队的顺序是相反的,只需要想办法利用两个栈的配合来模拟实现先进先出的出队过程即可。

利用两个栈来实现先进先出,假设在第一个栈中已经完成了入栈的过程

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

如果想要实现以hello的顺序出栈,借助第二个栈将h重新置于栈的顶部,o置于栈的底部,有了这一思路就很容易解决这个问题了,只要将第一个栈中的元素依次出栈并放入第二个栈中,即可使单词按照hello的顺序在第二个栈中从栈顶至栈底排列。

添加图片注释,不超过 140 字(可选)

然后对二个栈从栈顶开始依次出栈即可,这样就实现了利用栈实现队列先进先出的出队效果。

使用python代码实现如下:

class queue():
    def __init__(self):
        self.stack1=[]
        self.stack2=[]
    def push_(self,num):
        self.stack1.append(num)
    def pop_(self):
        if len(self.stack2)==0:
            while self.stack1:
                self.stack2.append(self.stack1.pop())
        return self.stack2.pop()

  • 19
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值