python两个队列实现一个栈和两个栈实现一个队列

Posted shengguorui

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python两个队列实现一个栈和两个栈实现一个队列相关的知识,希望对你有一定的参考价值。

1.两个栈实现一个队列

 两个栈stack1和stack2, push的时候直接push进stack1,pop时需要判断stack1和stack2中的情况。如果stack2不为空的话,直接从stack2中pop,如果stack2为空,把stack1中的值push到stack2中,然后再pop stack2中的值。

class Solution:
    def __init__(self):
        self.stack1 = []
        self.stack2 = []
        
    def push(self, node):
        # write code here
        self.stack1.append(node)
        
    def pop(self):
        # return xx
        if len(self.stack1) == 0 and len(self.stack2) == 0:
            return 
        elif len(self.stack2) == 0:
            while len(self.stack1) > 0:
                self.stack2.append(self.stack1.pop())
           
        return self.stack2.pop()

2.两个队列实现一个栈

进栈:元素入队列A

出栈:判断如果队列A只有一个元素,则直接出队。否则,把队A中的元素出队并入队B,直到队A中只有一个元素,再直接出队。为了下一次继续操作,互换队A和队B。

class Stock:
    def __init__(self):
        self.queueA=[]
        self.queueB=[]
    def push(self, node):
        self.queueA.append(node)
    def pop(self):
        if len(self.queueA)==0:
            return None
        while len(self.queueA)!=1:
            self.queueB.append(self.queueA.pop(0))
        self.queueA,self.queueB=self.queueB,self.queueA #交换是为了下一次的pop
        return self.queueB.pop()

 

以上是关于python两个队列实现一个栈和两个栈实现一个队列的主要内容,如果未能解决你的问题,请参考以下文章

剑指offer的python实现-用两个栈实现队列

面试准备之刷题总结:栈和队列

数据结构和算法之栈和队列一:两个栈模拟一个队列以及两个队列模拟一个栈

剑指offer-面试题9-用两个栈实现队列-栈和队列

栈和队列的常见题型

栈和队列----由两个栈组成队列