剑指offer_面试题9 : 用两个栈实现队列 ( python实现 )

本文介绍如何使用两个栈来实现队列的基本功能,包括在队列尾部插入元素和在队列头部删除元素。通过Python代码展示了具体的实现过程,包括插入和删除的示例。

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

用两个栈实现队列 ( python实现 )

一、题目描述

用两个栈实现一个队列,分别实现在队列尾部插入节点和在队列头部删除节点的功能。

  这里,简单的采用列表 (List) 以及其 list.append(),list.pop() 方法模拟栈。当然,在python中,实现一个栈 (Stack) 类,可参考Link。

二、解题思路

  暂略。(此处主要作为书中python实现补充)

三、代码实现

用python实现一个stackToQueue类,代码如下。

class stackToQueue(object):
    def __init__(self,stack1=[],stack2=[]):
        self.stack1 = stack1
        self.stack2 = stack2
        
    def appendTail(self,element):
        self.stack1.append(element)
            
    def deleteHead(self):
        if len(self.stack2) <= 0:
            while len(self.stack1):
                self.stack2.append(self.stack1.pop())   
        return self.stack2.pop()
        
    def is_empty(self):
        return len(self.stack1) == 0 and len(self.stack2) == 0

初始化一个类STQ,相当于一个Queue,使用插入函数 appendTail() 依次插入 1 2 3 4 5 。

>>> STQ = stackToQueue([],[])
>>> STQ.appendTail(1)
>>> STQ.appendTail(2)
>>> STQ.appendTail(3)
>>> STQ.appendTail(4)
>>> STQ.appendTail(5)

此时,队列中应该是 1 2 3 4 5,若是执行一次 deleteHead(),将删去队列头部元素,那么 1 被删除,剩下 2 3 4 5。

>>> STQ.deleteHead()
Out:
1

再执行一次 deleteHead(),则2被删除,队列中剩下 3 4 5。

>>> STQ.deleteHead()
Out:
2

接下来再次插入两个元素,先插入8,再插入6,此时队列中为3 4 5 8 6。

>>> STQ.appendTail(8)
>>> STQ.appendTail(6)

然后将整个队列全部删除,并依次打印删除元素。

>>> while STQ.si_empty() is not True:
		print(STQ.deleteHead())
Out:
3
4
5
8
6
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值