问题形貌
用两个栈来完成一个行列,完成行列的Push和Pop操纵。 行列中的元素为int范例。
解题要领
let stack1=[],//两个数组模仿栈的行动
stack2=[];
function push(node)
{
// write code here
//栈是后入先出(LIFO),行列是先入先出(FIFO)
//模仿行列的push操纵,直接往栈中推入即可
//然则要斟酌辅佐栈中还存在值的状况,须要先将辅佐栈中的值推回存储栈中
while(stack2.length !== 0){
stack1.push(stack2.pop());
}
stack1.push(node);
}
function pop()
{
// write code here
//模仿行列的pop操纵则要斟酌栈的后入先出特征,须要先将存储栈中的数组,推入辅佐栈,然后辅佐栈弹出
while(stack1.length !== 0){
stack2.push(stack1.pop());
}
return stack2.pop();
}
拓展——用两个行列完成一个栈的pop和push操纵
本质上和上面的没什么区分,只需捉住一点,栈是后入先出(LIFO),行列是先入先出(FIFO)。下面是完成代码。
let queue1=[],//两个数组模仿行列的行动
queue2=[];
function push(node) {
//推入的时刻要推断哪一个行列中有值,就推入谁人行列中
if(queue1.length === 0){
queue2.push(node);
}else{
queue1.push(node);
}
}
function pop() {
//弹出的时刻推断哪一个行列中有值,则先将该行列中的n-1个值弹出并存入另一个行列中,然后弹出末了一个值则为效果
if(queue1.length === 0){
while(queue2.length !== 1){
queue1.push(queue2.pop());
}
return queue2.pop();
}else{
while(queue1.length !== 1){
queue2.push(queue1.pop());
}
return queue1.pop();
}
}