1. キューを理解する前回のブログでは、制限されたデータ構造であるスタックについて説明しました。今度は、
その構造図は次のように表すことができます。
2. カプセル化キューキュー構造も配列形式で実装されています。まずはクラスを作成します。 関数キュー(){ } その中にプロパティとメソッドを追加し、プロパティ メソッドを通じてクラスに配列を追加します。次に、プロトタイプ メソッドを使用して、よく使用される操作を追加します。 キューに対する一般的な操作は次のとおりです。
では、それを実装してみましょう。 関数キュー(){ this.items = []; // キューの最後に 1 つ以上の新しい項目を追加します enqueue() Queue.prototype.enqueue = function(要素){ this.items.push(要素); } //キューの最初の項目(つまりキューの先頭の項目)を削除します。dequeue() Queue.prototype.dequeue = 関数(){ this.items.shift() を返します。 } //キューの最初の要素を返す front() Queue.prototype.front = 関数() { this.items[0]を返します。 } // スタックが空かどうかをチェックする isEmpty() Queue.prototype.isEmpty = 関数(){ this.items.length == 0 を返します。 } //キューに含まれる要素の数を返すsize() Queue.prototype.size = 関数(){ this.items.length を返します。 } //キューの内容を文字列形式に変換する toString() Queue.prototype.toString = 関数(){ var str = ''; for(var i =0;i<this.items.length;i++){ str += this.items[i] + ' '; } str を返します。 } } 上記はキューのカプセル化です。次にそれを検証します。 var キュー = 新しいキュー(); キュー。エンキュー(10); キュー。エンキュー(20); キュー。エンキュー(30); キュー。エンキュー(40); キュー。エンキュー(50); console.log(キュー); console.log('削除された最初の項目は: ' + queue.dequeue()); console.log('キューの最初の要素は: ' + queue.front()); console.log('スタックは空ですか: '+queue.isEmpty()); console.log('スタック構造の内容は次のとおりです:'); コンソールにログ出力します。 出力は次のようになります。 ビルドに成功しました。 太鼓を叩きながらプレゼントを渡すケースを見てみましょう! 3. 太鼓をたたいて花を渡す場合オリジナルのゲームルール:
ゲームのルールを変更します:
キューベースの関数をカプセル化します。
コードは次のとおりです。 // キュー関数をカプセル化する Queue(){ this.items = []; //最後に要素を追加します Queue.prototype.enqueue = function(element){ this.items.push(要素); } //最初の要素を削除します Queue.prototype.dequeue = function(){ this.items.shift() を返します。 } //最初の要素を返す Queue.prototype.front = function(){ this.items[0]を返します。 } //キューに含まれる要素の数を返す Queue.prototype.size = function(){ this.items.length を返します。 } } 関数 passGame(nameList,num){ // キューを作成します var queue = new Queue(); //すべての人をキューに追加します for(var i = 0;i<nameList.length;i++){ キューにエントリを追加します。(nameList[i]); } //ゲームをプレイする while (queue.size() > 1) { //num より前の人がキューの最後に追加されます for(var i =1;i<num;i++){ キューをエンキューします(キューをデキューします)。 } // num 番号の人は queue.dequeue() から直接削除されます。 } //勝者情報を取得します var endName = queue.front(); console.log('残りの人数は:' + endName); nameList.indexOf(endName) を返します。 } //テスト var nameList = ['a','b','c','d','e']; var g = passGame(nameList,5); console.log('この人の所在地は: '+g); 出力は次のようになります。 JavaScript でキュー構造を実装するプロセスに関するこの記事はこれで終わりです。JavaScript でキュー構造を実装することに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後も 123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: 良いリファクタリングを行うには、コードをリファクタリングするだけでなく、人生をリファクタリングすることも重要です。
この記事では、パーセンテージスコアリングプログレスバーを実現するためのjQueryの具体的なコードを...
多くの人が MySQL の起動時にこのエラーに遭遇しています。まず、このエラーの前提は、サービス ス...
Awk は、ソートを含む他の一般的なユーティリティによって実行できるいくつかのタスクを実行できる強...
「これは革命になるだろう」という記事が出たあと。業界の皆様に認知され、もちろん内外からの評価もいただ...
この章では、dockerの下にあるSpring BootプロジェクトでRedisを操作し始めます。準...
以下のように表示されます。 test コマンドはファイルが存在するかどうかを判断します。 ssh u...
目次1. 問題2. 解決策1. オブジェクトをanyとして宣言する2. オブジェクトのインターフェー...
データをコピーリモートでデータをコピーする場合、通常は rsync コマンドを使用しますが、小さなフ...
1. 解凍版のインストール(1)圧縮パッケージをダウンロードし、ディスクの場所に解凍します。圧縮パッ...
この記事では、Web ページ レイアウト デザインのいくつかの簡単な原則をまとめ、Web ページ デ...
Dockerは複数のSpringbootを実行する1番目: ポートマッピング 2番目: メモリサイズ...
目次乱数を生成する0から1までの乱数を生成する指定された範囲内で乱数を生成します6桁のモバイル認証コ...
境界範囲間のmysql間の範囲は両側の境界値を含む例: 3 から 7 までの id は、id >...
序文最近、データベースのテーブルに 2 つのフィールドを追加しました。その後、ディスク容量不足のよう...
RFC793 ドキュメントの SYN フラグを持つプロセス パケットはデータを伝送できません。つま...