1.类型:栈
2.描述:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
3.思路
栈:后进先出
队列:先进先出
用两个栈实现队列,大概意思就是,12345顺序输入,pop输出也应该是12345。
那么s1,s2两个栈,s1顺序push入栈 12345,然后把s1中pop出去(需要循环)的数据s2入栈54321,最后把s2的元素全部出栈就会是12345.
考虑:如果pop和push操作不是连续的话怎么办呢?那么就需要在s2push前判断是否为空,如果不为空。就先pop s2内存在的元素;如果为空,再将s1的元素依次pop 再push再pop。
4.代码
自己改写的:
let stack1 = [], stack2 = [];
function push(node)
{
// write code here
stack1.push(node);
}
function pop()
{
// write code here
if(stack2.length != 0) {
return stack2.pop()
} else {
while(stack1.length) {
stack2.push(stack1.pop())
}
return stack2.pop()
}
}
参照(上面的简化 只用了一个return):
let stack1 = [], stack2 = [];
function push(node)
{
// write code here
stack1.push(node);
}
function pop()
{
// write code here
if(!stack2.length) {
while(stack1.length) {
stack2.push(stack1.pop())
}
}
return stack2.pop()
}