两个栈实现队列
两个栈实现队列
用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。
(若队列中没有元素,deleteHead 操作返回 -1 )
思路
队列:先进先出
栈:先进后出
两个栈,一个用来存放数据,一个用来辅助
- 队列尾部插入:先将data栈中数据移到helper栈中,再将插入的数值入data栈,最后将helper数据搬回data,从而实现先进后出的原则
- 队列头部删除:因data栈已是队列的顺序,所以直接出栈
#列表pop()会删除并返回最后一个元素
def __init__(self):
self.data = [] #注意语法 self
self.helper = []
def appendTail(self, value):
# 元素搬移 data->helper
while self.data:
self.helper.append(self.data.pop())
#实际添加元素操作
self.data.append(value)
# 元素搬移 helper->data
while self.helper:
self.data.append(self.helper.pop())
"""
:type value: int
:rtype: None
"""
def deleteHead(self):
if not self.data:
return -1
return self.data.pop()