两个队列模拟一个栈
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