劍指offer-js 用兩個棧實現隊列

用兩個棧實現隊列

題目描述:

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

問題分析:

 兩個棧:一個插入 一個輸出,但是注意 棧先入後出,隊列先入先出
 藉助一次pop,push  之後再pop 就完成了順序的顛倒,也就完成了先入先出

代碼展示:

// 兩個棧:一個插入 一個輸出,但是注意 棧先入後出,隊列先入先出
// 藉助一次pop,push  之後再pop 就完成了順序的顛倒,也就完成了先入先出

var stack1 = [];//棧1 插入
var stack2 = [];//棧2 輸出

function push(node)
{
    stack1.push(node);//添加數據
}
function pop()
{
    if((stack1.length == 0) && (stack2.length == 0)) //兩個棧都爲空 輸出 null
        return null;
    if(stack2.length == 0){
        //棧2爲空的情況下,就將棧1的數據 pop出來,push到棧2中,這樣就完成了先入先出
        while(stack1.length != 0){
            stack2.push(stack1.pop());
        }
        return stack2.pop();
    }else{
        //棧2 不爲空 直接pop
        return stack2.pop();
    }
}

總結:

主要就是 兩個棧 pop--push--pop 完成先入先出,其他的就沒什麼了
不過,用數組來實現 棧和隊列 也是很基礎的,這個實現的大概方法可以在腦子裏過一下
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章