思路:
首先明白栈是先进后出,队列是先进先出
1::准备两个空的存储单元,原始originArr为空数组,目标targetArr也是空数组,
2:将数据push到原始数组中,并且返回push进去的数据,此时,push操作完成
3:因为现在是栈操作,所将原始数组的数据pop到目标数组中,按照先进后出的原则,如果原始数组进栈的顺序是1,2,3,那么出栈的顺序是3,2,1,此时需要遍历数组,因为长度有限,不可能一直push,一直pop。将原始数组pop出来,push到目标数组 代码如下:targetArr.push(originArr.pop())
4 接下来就是将两个栈来实现一个队列的关键操作,即将栈的先进后出转化为队列的先进先出(比如入栈 顺序是1,2,3,出栈是3,2,1现在要转化成队列,那么出队顺序就是1,2,3) 代码如下originArr.push(targetArr.pop()) 。注:每次在操作完毕,一定要返回结果
5:在控制台push(1),[1]
push(2),[1,2]
push(3)[1,2,3]
pop() 1
pop() 2
pop() 3 此结果就证明两个栈实现一个队列,完成队列的push和pop操作
<script>
var originArr = [];
var targetArr = [];
function push(node)
{
if(node)
{
originArr.push(node);
}
return originArr;
}
function pop(){
var originLen = originArr.length;
var targetLen = targetArr.length;
for(var i = 0 ; i<originLen;i++)
{
targetArr.push(originArr.pop());
}
var result = targetArr.pop();
for(var j = 0; j <targetLen ; j++)
{
originArr.pop(targetArr.push());
}
return result;
}
</script>