<>--javascript(5)-2つのスタックでキューを実現する

1052 ワード

二つのスタックでキューを実現します.
テーマの説明
2つのスタックで1つのキューを実現し、キューのPushとPop操作を完了します.キューの要素はintタイプです.コードは以下の通りです
function Stack(){
    var item = [];
    this.push = function(node){
        item.push(node);
    };
    this.pop = function(){
        return item.pop();
    };
    this.isEmpty = function(){
        return item.length === 0;
    };
}
var stack1 = new Stack();
var stack2 = new Stack();
function push(node)
{
    stack1.push(node);
    // write code here
}
function pop()
{
    if(stack1.isEmpty() && stack2.isEmpty()){
         throw new Error("Queue is empty");
    }
    if(stack2.isEmpty()){
        while(!stack1.isEmpty()){
            stack2.push(stack1.pop());
        }
    }
    return stack2.pop();
    // write code here
}
module.exports = {
    push : push,
    pop : pop
};
問題を解く構想
スタックは後進先のデータ構造であり、キューは先進先のデータ構造であり、本題の中で、1、入隊を実現する:要素を直接スタック1に押し込む.2、隊列を実現する:まず二つのスタックが全部空かどうかを判断し、もしそうでないなら、スタック2を判断し、もし空であれば、スタック1は空ではなく、まずスタック1の要素を全部倉庫から出して、順番にスタック2を圧入してから、再びスタック2から出したら、元のスタック1の底にある元素を取得した.