美文网首页
两个队列模拟一个栈

两个队列模拟一个栈

作者: hustyanye | 来源:发表于2019-07-28 16:29 被阅读0次

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

    思路:

    栈:后进先出
    队列:先进先出

    两个栈可以分为pop栈和push栈。每次push,把数据放到push栈中即可。重点是pop数据的时候。首先判断如果pop栈不为空,直接pop出去就好了。如果为空,从push栈中把数据一个个的pop到pop栈中。pop栈的数据相当于逆序的逆序后,所以pop栈就变成了先进先出的队列了。然后把pop栈数据pop出一个返回。

    class Solution:
        def __init__(self):
            self.push_list = []
            self.pop_list = []
        
        def push(self, node):
            # write code here
            self.push_list.append(node)
            
        def pop(self):
            # return xx
            if len(self.pop_list)>0:
                return self.pop_list.pop()
            else:
                if len(self.push_list)>0:
                    while self.push_list:
                        self.pop_list.append(self.push_list.pop())
                    return self.pop_list.pop()
                else:
                    return None
    

    相关文章

      网友评论

          本文标题:两个队列模拟一个栈

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