首頁  >  文章  >  web前端  >  js中利用兩個堆疊實作佇列的演算法

js中利用兩個堆疊實作佇列的演算法

不言
不言原創
2018-07-21 10:59:511729瀏覽

這篇文章跟大家分享的是關於js中利用兩個堆疊實作佇列的演算法,內容很不錯,有需要的朋友可以參考一下,希望可以幫助到大家。

題目描述

用兩個堆疊來實作一個佇列,完成佇列的Push和Pop運算。佇列中的元素為int型別。

分析

兩個堆疊實作佇列,那就是一個進一個出,且題中沒說兩個堆疊的長度限制,那麼對於兩個堆疊s1和s2來說,有兩個注意的點:

  • s1.push時,若s2不為空且s1為空,為了保證正確的順序,則將s2的元素全返入s1,然後再s1.push

  • s2.pop時,若s2為空且s1不為空,為了保證正確的順序,則將s1的元素全放入s2,再s2.pop

程式碼實作

var s1 = [], s2 = [];
function transferStack(a, b) {
    while(a.length !== 0){
        b.push(a.pop());
    }
}
function push(val) {
    if(s1.length === 0 && s2.length !== 0){
        transferStack(s2, s1);
    }

    s1.push(val);
}

function pop(){
    if(s1.length !== 0 && s2.length === 0){
        transferStack(s1, s2);
    }

    return s2.pop();
}

相關推薦:

jQuery中$()函數的使用方法

以上是js中利用兩個堆疊實作佇列的演算法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn