題目描述
用兩個棧來實現(xiàn)一個隊列兑凿,完成隊列的Push和Pop操作。 隊列中的元素為int類型。
解:
隊列:先進先出
棧:后進先出
首先定義棧:
function Stack(){
var item = [];
this.push = function(node){
item.push(node);
return item;
}
this.pop = function(){
return item.pop();
}
this.isEmpty = function(){
return item.length ===0;
}
}
然后就是隊列的方法毅人,push只需要把值放入棧中就好
function push(node)
{
stack1.push(node);
}
因為棧出的順序和隊列是相反的托启,所以需要先彈出放入另外一個棧中宅倒,這個棧pop的順序就和隊列一樣了。
function pop()
{
if(stack1.isEmpty() && stack2.isEmpty()){
throw new Error("空隊列");
}
if(stack2.isEmpty()){
while(!stack1.isEmpty()){
stack2.push(stack1.pop());
}
}
return stack2.pop();
}