题目描述:
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
题解:
栈的特性是:后入先出。根据题目提示,使用 2 个栈即可。一个栈inStack用来存储插入队列的数据,一个栈outStack用来从队列中取出数据。
算法分为入队和出队过程。
入队过程:将元素放入 inStack 中。
出队过程:
outStack 不为空:弹出元素
outStack 为空:将 inStack 元素依次弹出,放入到 outStack 中(在数据转移过程中,顺序已经从后入先出变成了先入先出)
let outStack = [];
let inStack = [];
function push(node)
{
inStack.push(node);
}
function pop()
{
if(!outStack.length){
while(inStack.length){
outStack.push(inStack.pop());
}
}
return outStack.pop();
}