js如何用两个栈模拟队列

用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。

分析

队列特性:先进先出
栈:先进后出

js中我们用数组实现栈,单个数组 压栈push(),出栈pop(),

js中同样用数组实现队列,入队 push(),出队shift(),如果用两个栈(数组)则我们只需要将另外一个数组reverse()

代码

  1. 两个数组实现
let stackA = [];
let stackB = [];
function push(node) {
    // write code here
    let succ = false;
    if (typeof node === 'number') {
        stackA.push(node);
        succ = true;
    } else {
        succ = false;
    }
    return succ;

}
function pop() {
    // write code here
    let cur = null;
    if (stackB.length > 0) {
        cur = stackB.pop();
    } else {
        if (stackA.length > 0) {
            /* stackA.forEach(item=>{
                 stackB = stackA.reverce();
             })*/
            stackB = stackA.reverse();
            stackA = [];
            cur = stackB.pop();
        }
    }
    return cur
}

2.一个数组实现

let stackA = [];
function push(node) {
    // write code here
    let succ = false;
    if (typeof node === 'number') {
        stackA.push(node);
        succ = true;
    } else {
        succ = false;
    }
    return succ;

}
function pop() {
    // write code here
    let cur = null;
    if (stackA.length > 0) {
        cur = stackA.shift();
    }
    return cur
}

总结

js中实现栈和队列数据结构最主要是对数组的几个操作方法应用

pop 尾部删除,返回删除元素数组长度减一

push 尾部添加,数组长度加一

shift 头部删除,返回删除元素,长度减一

unshift 头部添加,长度加一

reverse 数组内容顺序反转

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章