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

推薦する

Dockerは公式Redisイメージをインストールし、パスワード認証を有効にします

参考: Docker 公式 Redis ドキュメント1. 特別なバージョン要件がある場合は、redi...

Docker はすべてのコンテナをバッチ起動して閉じます

Dockerの場合すべてのコンテナコマンドを開始する docker を起動します $(docker ...

DockerにTomcatコンテナを追加したときにホームページにアクセスできない問題の解決方法

質問docker run コマンドを使用して、tomcat コンテナが正常に追加されました。ポートも...

コマンドを使用してMySQLデータベース(de1)を作成する方法

1. MYSQLに接続するフォーマット: mysql -h ホストアドレス -u ユーザー名 -p ...

Windows 10 での mysql5.5 データベース コマンドラインの中国語文字化け問題を解決する

システムをリセットした後、かなり前にインストールした MySQL データベースのコンソール クエリで...

XHTML Web ページ チュートリアル

この記事は主に、初心者に XHTML の基本的な知識と、XHTML と HTML の違いを理解しても...

MySQL トランザクションの概念と使用法の詳細な説明

目次情事の概念取引の状態取引の役割取引の特徴トランザクション構文トランザクション対応ストレージエンジ...

ウェブページ内でウェブテーブルやdivレイヤーが引き伸ばされる問題の解決策

<br />Web ページをデザインするときには、いつも不快なことに遭遇します。最も一般...

Linux で nginx を起動および再起動する方法

Nginx (エンジン x) は、IMAP/POP3/SMTP サービスも提供する高性能 HTTP ...

CSSスタイルで実現されるHTML背景色のグラデーション効果

エフェクトのスクリーンショット:実装コード:コードをコピーコードは次のとおりです。 <!DOC...

Mysql ファジークエリが大文字と小文字を区別するかどうかの詳細な調査

序文最近、私は小さな個人ブログ プロジェクトを書くのに忙しくしています。 「グローバル検索」機能を実...

MySQL で大文字と小文字を区別しないように設定する方法

mysql は大文字と小文字を区別しないように設定されていますウィンドウズmysqlがインストールさ...

フローティングメニューを実装するjQueryプラグイン

毎日jQueryプラグインを学ぶ - フローティングメニュー、参考までに、具体的な内容は次のとおりで...