用兩個棧實現隊列
題目描述:
用兩個棧來實現一個隊列,完成隊列的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 完成先入先出,其他的就沒什麼了
不過,用數組來實現 棧和隊列 也是很基礎的,這個實現的大概方法可以在腦子裏過一下