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 數組內容順序反轉

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