美文网首页
python练习之两个栈实现队列

python练习之两个栈实现队列

作者: fishandcat | 来源:发表于2018-03-27 22:35 被阅读0次

    用两个栈实现队列,实现入队和出队方法

    代码:

    class Queue(object):
        def __init__(self):
            self.stack1 = []
            self.stack2 = []
    
        #入队
        def enqueue(self,element):
            if self.stack1:
                self.stack1.append(element)
            else:
                while self.stack2:
                    self.stack1.append(self.stack2.pop())
                self.stack1.append(element)
    
        #出队
        def dequeue (self):
            if self.stack2:
                return self.stack2.pop()
            elif self.stack1:
                while self.stack1:
                    self.stack2.append(self.stack1.pop())
                return self.stack2.pop()
            else:
                return None
    
    if __name__=='__main__':
        queue = Queue()
        queue.enqueue('9')
        queue.enqueue('10')
        queue.enqueue('6')
        queue.enqueue('2')
    
        print queue.dequeue()
        print queue.dequeue()
        print queue.dequeue()
        print queue.dequeue()
    

    运行结果为:

    9
    10
    6
    2
    

    思路:
    入队时,先判断s1是否为空,如不为空,说明所有元素都在s1,此时将入队元素直接压入s1;如为空,要将s2的元素逐个“倒回”s1,再压入入队元素。
    出队时,先判断s2是否为空,如不为空,直接弹出s2的顶元素并出队;如为空,将s1的元素逐个“倒入”s2,把最后一个元素弹出并出队。

    相关文章

      网友评论

          本文标题:python练习之两个栈实现队列

          本文链接:https://www.haomeiwen.com/subject/kyrecftx.html