剑指offer[5]——用两个栈实现队列
题目描述
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
我们先来了解一下什么是队列和栈。
对队列的理解就像你在排队,排队只能从尾部进去,头部出去,你不能插队,只能按照规则来,遵循先进先出的原则。而栈不一样的是只有一个出入口,进去只能从尾部进去,出去也只能从尾部出去,这个时候你进去的早反而出去的比较晚,遵循先进后出的原则。
题目的要求很简单,就是利用两个栈实现一个队列。我们就会想用一个栈来存储,另一个栈作为临时利用,就是说执行PUSH
函数的时候和栈的PUSH
是一样的,直接调用即可。但是POP
的话就不太一样,队列是从栈底出去,所以这个时候就要求我们利用另一个栈,把存储栈中的元素依次POP
到临时栈中,全部移过去之后再执行POP
函数即可实现将栈底的元素弹出,代码如下:
let arr1 = [];
let arr2 = [];
function push(node)
{
arr1.push(node);
}
function pop()
{
for(let i=0; i<arr1.length; i++){
arr2.push(arr1[arr1.length-i-1]);
}
const num = arr2.pop();
arr1 = [];
for(let i=0; i<arr2.length; i++){
arr1.push(arr2[arr2.length-i-1]);
}
arr2 = [];
return num;
}
我不管,JS天下第一