ホームページ >ウェブフロントエンド >jsチュートリアル >jsで2つのスタックを使ってキューを実装するアルゴリズム

jsで2つのスタックを使ってキューを実装するアルゴリズム

不言
不言オリジナル
2018-07-21 10:59:511814ブラウズ

この記事では、2 つのスタックを使用して JS でキューを実装するアルゴリズムについて説明します。必要な方はぜひ参考にしてください。

問題の説明

2 つのスタックを使用してキューを実装し、キューのプッシュ操作とポップ操作を完了します。 キュー内の要素は int 型です。

分析

2 つのスタックはキュー、つまり 1 つの入力と 1 つの出力を実装しており、質問では 2 つのスタックの長さの制限について言及されていないため、2 つのスタック s1 と s2 については、支払うべきポイントが 2 つあります。注意点:

  • s1.push のとき、s2 が空でなく、s1 が空の場合、正しい順序を確保するために、s2 のすべての要素が s1 に返され、その後 s1.push

  • s2.pop、s2 が空で s1 が空ではない場合、正しい順序を確保するために、s1 のすべての要素を s2 に入れてから s2.pop

コード実装

var s1 = [], s2 = [];
function transferStack(a, b) {
    while(a.length !== 0){
        b.push(a.pop());
    }
}
function push(val) {
    if(s1.length === 0 && s2.length !== 0){
        transferStack(s2, s1);
    }

    s1.push(val);
}

function pop(){
    if(s1.length !== 0 && s2.length === 0){
        transferStack(s1, s2);
    }

    return s2.pop();
}

関連推奨事項:

jQuery 二分木再構成アルゴリズムの解析を実現する$()関数

以上がjsで2つのスタックを使ってキューを実装するアルゴリズムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。