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を使用してダークモードとブライトモードを切り替える

推薦する

TypeScriptのインストールと使用方法と基本的なデータ型

最初のステップはTypeScriptをグローバルにインストールすることですnpmを使用してインストー...

Mac OS に MySQL 5.7.20 をインストールするための詳細なグラフィックとテキストの説明

Mac OS X で TAR.GZ から MySQL 5.7 をインストールする MySQL 5.6...

CSSスタイルのカスケーディングルールの詳細な説明

CSS スタイル ルール構文スタイルは、CSS の基本単位です。各スタイル ルールは、セレクターと宣...

MySQL監視ツールmysql-monitorの詳細な説明

1. 概要mysql-monitor MYSQL 監視ツール、最適化ツール、1 つの Java Sp...

Vue グローバル フィルターの概念、注意事項、基本的な使用方法

目次1. フィルターの概念1. グローバルフィルターのフォーマットをカスタマイズする2. フィルター...

新しく作成された MySQL ユーザーの % には localhost が含まれていますか?

通常の説明%はどのクライアントでも接続できることを意味しますlocalhostはローカルコンピュータ...

Linux および Unix サーバーのセキュリティを強化する方法

ネットワーク セキュリティは非常に重要なトピックであり、サーバーはネットワーク セキュリティにおける...

HTML 再利用テクニック

HTML の再利用は、あまり話題に上らない言葉です。今日は、この問題を次のようにまとめたいと思います...

HTML+CSS をベースにした素敵なフリップログインおよび登録インターフェースを作成します

素敵なフリップログインと登録インターフェースを作成する序文最近、ネットワーク ディスクを構築しようと...

MySQLにおけるテーブルインデックスの定義方法と導入

概要インデックスは、テーブル内の 1 つ以上の列に基づいて DBMS によって特定の順序で作成される...

MySQL 8のパスワードを忘れた場合のベストな対処法の簡単な分析

序文MySQL に精通している読者は、MySQL が非常に迅速に更新されることに気付くかもしれません...

フレックスマルチカラムレイアウトで発生する問題と解決策の詳細な説明

フレックス レイアウトは間違いなくシンプルで使いやすいです。レイアウトをよりシンプルかつ高速にします...

Vueのキャッシュ方法の例の詳細な説明

最近、「フロントエンドキャッシュ」という新しい要件が作成されました要件背景: フォームへの高頻度の繰...

Nginx タイムアウト設定の詳細な説明

最近、プロジェクトで nginx を使用し、バックエンドで Java を使用しました。バックエンドで...

LinuxサーバーでRabbitMQ管理ページにアクセスできない問題を解決

私のプロジェクトの特定の機能ではサーバーが rabbitmq にメッセージを送信する必要があるため、...