用两个栈来实现队列

题目描述

用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。

算法实现

利用两个栈都是后进先出的特性,可以实现负负得正的效果。
即每次入栈都进入stack1,每次出栈先在stack2出栈,若stack2为空,则将stack1的元素全部出栈,按序入栈stack2,然后stack2出栈一个元素即可。

代码

class CQueue(object):

    def __init__(self):
        self.stack1 = []
        self.stack2 = []

    def appendTail(self, value):
        self.stack1.append(value)

    def deleteHead(self):
        if len(self.stack1) == 0 and len(self.stack2) == 0:
            return -1
        if (len(self.stack2) == 0):
            while len(self.stack1) != 0:
                self.stack2.append(self.stack1.pop())
        return self.stack2.pop()
posted @ 2020-03-22 10:54  isshpan  阅读(121)  评论(0)    收藏  举报