用兩個棧來實現一個隊列,完成隊列的Push和Pop操作。 隊列中的元素為int類型。--js


var inStack = [],
    outStack = [];
function push(node) {
    inStack.push(node);
}
function pop() {
    if (!outStack.length) {
        while (inStack.length) {
            outStack.push(inStack.pop());
        }
    }
    return outStack.pop();
}

思路:棧:先進后出,隊列:先進先出

如果轉化:

1.將內容先push進一個棧inStack,

2.判斷outStack是否為空,空:將棧inStack中的元素pop(刪除並返回數組的最后一個元素)並push進outStack,非空:直接出棧

3.出棧時,先push進inStack先從outStack出來,即:實現了先進先出

擴展:

用兩個隊列實現一個棧的功能?

入棧:將元素進隊列A

出棧:判斷隊列A中元素的個數是否為1,如果等於1,則出隊列,否則將隊列A中的元素   以此出隊列並放入隊列B,直到隊列A中的元素留下一個,然后隊列A出隊列,再把   隊列B中的元素出隊列以此放入隊列A中。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM