算法题解第三章

14 篇文章 0 订阅
13 篇文章 0 订阅

文章目录

题目

用两个队列实现一个栈

解析

##首先我们知道 栈:是先入后出 后入先出 队列是先入先出
##已知条件 两个队列A,B 结果一个后入先出的栈
##所以实现思路:
##1.先写一个队列
##2.把数据先入到A队列
##3.把A队列的数据依次取出,放到B队列,直到A队列中仅剩一个,
此时A队列进行取出,取完后A,B队列互换 至此完成两个队列完成一个栈
##4.这个还需做一些条件限制:



class NewQueue(object):

    def __init__(self):
        self.queue =[]


    def add_data(self,data):
        self.queue.append(data)

    def delete_data(self):
        if len(self.queue)==0:
            return -1
        return self.queue.pop(0)

    def print_data(self):
        return self.queue

    def get_length(self):
        return len(self.queue)


###test
newqueue =NewQueue()
newqueue.add_data(1)
newqueue.add_data(10)
newqueue.add_data(11)
# print(newqueue.print_data())
# data=newqueue.delete_data()
# print(data)
# print(newqueue.print_data())

class newStack(object):
    def __init__(self):
        self.queueA = NewQueue()
        self.queueB = NewQueue()


    def add_data(self,data):
        self.queueA.add_data(data)

    def del_data(self):
        if self.queueA.get_length()==0:
            return -1
        if self.queueA.get_length()==1:
            return self.queueA.delete_data()
        for i in range(self.queueA.get_length()-1):
            self.queueB.add_data(self.queueA.delete_data())

        return_data=self.queueA.delete_data()
        self.queueA,self.queueB =self.queueB,self.queueA
        return return_data


    def print_data(self):
        return self.queueA.print_data()

##test测试

newstack=newStack()

newstack.add_data(2)
newstack.add_data(5)
newstack.add_data(7)
print(newstack.print_data())
datas=newstack.del_data()
print(datas)
print(newstack.print_data())


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值