用两个栈实现队列
题目描述:
用两个栈来实现一个队列,完成队列的Push和Pop操作。
队列中的元素为int类型。
问题分析:
两个栈:一个插入 一个输出,但是注意 栈先入后出,队列先入先出
借助一次pop,push 之后再pop 就完成了顺序的颠倒,也就完成了先入先出
代码展示:
// 两个栈:一个插入 一个输出,但是注意 栈先入后出,队列先入先出
// 借助一次pop,push 之后再pop 就完成了顺序的颠倒,也就完成了先入先出
var stack1 = [];//栈1 插入
var stack2 = [];//栈2 输出
function push(node)
{
stack1.push(node);//添加数据
}
function pop()
{
if((stack1.length == 0) && (stack2.length == 0)) //两个栈都为空 输出 null
return null;
if(stack2.length == 0){
//栈2为空的情况下,就将栈1的数据 pop出来,push到栈2中,这样就完成了先入先出
while(stack1.length != 0){
stack2.push(stack1.pop());
}
return stack2.pop();
}else{
//栈2 不为空 直接pop
return stack2.pop();
}
}
总结:
主要就是 两个栈 pop--push--pop 完成先入先出,其他的就没什么了
不过,用数组来实现 栈和队列 也是很基础的,这个实现的大概方法可以在脑子里过一下

本文介绍了一种使用两个栈实现队列的方法,通过巧妙地利用栈的后进先出特性来实现队列的先进先出特性。具体实现包括在插入元素时将其推入一个栈,而在弹出元素时,如果另一个栈为空,则将第一个栈的所有元素依次弹出并压入第二个栈,最后从第二个栈弹出元素。
210

被折叠的 条评论
为什么被折叠?



