python练习之两个栈实现队列

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

代码:

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练习之两个栈实现队列)