两个队列模拟一个栈

2019-07-28  本文已影响0人  hustyanye

用两个栈来实现一个队列,完成队列的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
上一篇下一篇

猜你喜欢

热点阅读