JavaScriptは両端キューを実装する

JavaScriptは両端キューを実装する

この記事の例では、両端キューを実装するためのJavaScriptの具体的なコードを参考までに共有しています。具体的な内容は次のとおりです。

1. 両端キュー

deque は、フロントエンドとバックエンドの両方から同時に要素を追加および削除できる特別なキューです。

2. 両端キューの応用

チケットを買ったばかりの人が簡単な情報を聞きたいときは、列の先頭に戻ることができます。列の最後尾の人が急いでいる場合は、列を離れることができます。

3. 両端キュー方式

addFront(element): このメソッドは、両端キューの先頭に新しい要素を追加します。
addBack(element): このメソッドは、両端キューのバックエンドに新しい要素を追加します (実装方法は、Queue クラスの enqueue メソッドと同じです)。
removeFront(): このメソッドは、両端キューの先頭から最初の要素を削除します。
removeBack(): このメソッドは、両端キューの後ろから最初の要素を削除します。
peekFront(): このメソッドは、両端キューの最初の要素を返します。
peekBack(): このメソッドは、両端キューの後ろの端にある最初の要素を返します。

4. 実装

クラスDeque{
           コンストラクタ(){
               this.items = {};
               カウント = 0;
               this.lowestCount = 0; 
           }

        // 両端キューの先頭に新しい要素を追加します。addFront(element){
            if(this.isEmpty()){
                this.addBack(要素);
            }
            そうでない場合(this.lowestCount > 0){
                this.lowestCount --;
                this.items[this.lowestCount] = 要素;
            }
            それ以外{
                for(let i=this.count;i>0;i--){
                    this.items[i] = this.items[i-1]; 
                }
                this.lowestCount = 0;
                this.items[this.lowestCount] = 要素;
                this.count++;
            }
        };
        addBack(要素){
            this.count++;
            this.items[this.count-1] = 要素;
        };
        前面を削除します(){
            if(this.isEmpty()){
                未定義を返します。
            }
            定数結果 = this.items[this.lowestCount];
            this.items[this.lowestCount]を削除します。
            this.lowestCount++;
            結果を返します。
        };
        削除(){
            if(this.isEmpty()){
                未定義を返します。
            }
            定数結果 = this.items[this.count-1];
            this.items[this.count-1]を削除します。
            this.count--;
            結果を返します。
        };
        ピークフロント(){
            if(this.isEmpty()){
                null を返します。
            }
          this.items[this.lowestCount]を返します。
        };
        ピークバック(){
            if(this.isEmpty()){
                null を返します。
            }
            this.items[this.count-1]を返します。
        };
        空です(){
            this.count を返します - this.lowestCount == 0;
        }
        サイズ(){
            this.count - this.lowestCount を返します。
        }
        文字列(){
            if(this.isEmpty()){
                戻る '';
            }
            objString = `${this.items[this.lowestCount]}` とします。
            (var i=this.lowestCount+1;i<this.count;i++){
                objString = `${objString},${this.items[i]}`;
            }
            objString を返します。
        }
        クリア(){
            this.items={};
            カウント = 0;
            this.lowestCount = 0;
        }
   

       }

       const deque = 新しい Deque();
       deque.addFront('John');
       deque.addFront('Jack');
       deque.addFront('エイミー');
       deque.addBack('Lisa');
    // deque.removeFront();
    // deque.removeBack();
    console.log(deque.size());
    コンソールにログ出力します。
    コンソールにログ出力します。
    コンソールにログ出力します。
       console.log(deque.clear());
       コンソールにログ出力します。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • JS でのキューと両端キューの詳細な実装と適用
  • jsでイベントキュー操作関数を書く
  • JavaScript配列のスタックメソッドとキューメソッドの詳しい説明
  • キューとスタックメソッドのJS実装
  • JavaScript キュー関数と非同期実行の詳細な説明
  • JS アルゴリズムとデータ構造におけるキューの例の詳細な説明
  • キュー先入先出関数の JS 実装例
  • JavaScript で配列を使用して実装された循環キュー コード
  • JavaScript キュー、優先キュー、循環キュー
  • JSは2つのキューを使ってスタックを表現する方法を実装している

<<:  ウェブページを作成するために最もよく使用されるHTMLタグ

>>:  CSSを使用してダークモードとブライトモードを切り替える

推薦する

Linux システムの /etc/fstab ファイルの詳細な解釈

序文 [root@localhost ~]# cat /etc/fstab # #/etc/fsta...

Linux での MySQL のアンインストールとインストールのグラフィック チュートリアル

ブログを書くのは初めてです。開発に携わって2年になります。仕事の後に何か有意義なことを見つけたいと思...

デカルト積原理を使用してMySQLで複数のテーブルをクエリする方法を簡単に説明します。

MySQL マルチテーブルクエリ (直積原理)まず、データが使用するテーブルを決定します。デカルト...

MySQL データベースの最適化に関する 9 つのヒント

目次1. 最も適切なフィールド属性を選択する2. フィールドをNOT NULLに設定してみる3. サ...

スタックメニューを実装するためのjQueryプラグイン

jQueryプラグインの毎日の積み重ねメニュー、参考までに、具体的な内容は次のとおりです。スタックメ...

MySQL 全文あいまい検索 MATCH AGAINST メソッドの例

MySQL 4.x 以降では、全文検索 MATCH ... AGAINST モード (大文字と小文字...

自分のブログを構築しながら学んだこと

<br />ブログを始めて 1 年、私はブログの内外で多くのことを個人的に学びました。ま...

HTML+CSS+JavaScript でシンプルな三目並べゲームを作成する

目次HTMLの実装CSSを追加Javascript部分の実装デモアドレス HTMLの実装まず、hea...

Debian ベースの Linux システム ソフトウェア インストール コマンドの詳細な説明 (推奨)

Debian の紹介Debian は、広い意味では、フリーなオペレーティング システムの作成に専念...

preタグを自動的に折り返すためのサンプルコード

pre 要素は、フォーマット済みのテキストを定義します。 pre 要素で囲まれたテキストでは、通常、...

Dockerイメージをインポートおよびエクスポートする方法

この記事では、移行、バックアップ、アップグレードなどのシナリオで使用される Docker イメージの...

クールな充電アニメーションを実現する純粋なCSS

CSS のみを使用してどのような充電アニメーション効果を作成できるかを見てみましょう。バッテリーを...

ウェブデザインにおけるテキスト入力ボックスのパラメータの説明

<br />一般的なゲストブック、フォーラムなどでは、テキスト入力ボックスが使われていま...

Linx awk入門チュートリアルの詳細な説明

Awk はテキスト ファイルを処理するためのアプリケーションであり、ほぼすべての Linux システ...

Docker rocketmq デプロイメントの実装例

目次準備展開プロセスRocketMQ の初体験関連する質問ヘルプドキュメント私は最近 RocketM...