1. スタック構造を理解する配列は一般的なデータ構造であり、配列内の任意の位置にデータを挿入したり削除したりできることはご存じのとおりです。ただし、特定の機能を実現するために、この任意性を制限しなければならない場合もあります。スタックとキューは、比較的一般的な制限付きデータ構造です。まずはスタックを見てみましょう。
構造図は以下のとおりです。 人生における積み重ねに似ている
次に、スタック構造のカプセル化を一緒に実装してみましょう。採用するメソッドは配列に基づいています。 2. スタック構造のカプセル化まず、スタック構造をカプセル化するクラスを次のように作成します。 関数 Stack(){ } その中にプロパティとメソッドを追加し、プロパティ メソッドを通じてクラスに配列を追加します。次に、プロトタイプ メソッドを使用して、よく使用される操作を追加します。 スタックに対する一般的な操作は次のとおりです。
次に、これらを 1 つずつ実装します。 関数 Stack(){ this.items = []; // スタックの先頭に新しい要素を追加します。押す() Stack.prototype.push = function(要素){ this.items.push(要素); } // スタックの一番上の要素を削除する pop() Stack.prototype.pop = function(){ this.items.pop() を返します。 } // スタックを変更せずにスタックの一番上の要素を返す peek() Stack.prototype.peek = 関数(){ this.items[this.items.length-1]を返します。 } // スタックが空かどうかを判定する isEmpty() Stack.prototype.isEmpty = 関数(){ (this.items.length == 0)の場合{ true を返します。 }それ以外 { false を返します。 } } // スタック内の要素数を返す size() Stack.prototype.size = function(){ this.items.length を返します。 } // スタック構造の内容を文字として返す toString() Stack.prototype.toString = 関数(){ var str = ''; for(var i =0;i<this.items.length;i++){ str += this.items[i] + ' '; } str を返します。 } }
最後に確認します。コードは次のとおりです。 var スタック = 新しい Stack(); スタックをプッシュします(1); スタックをプッシュします(2); スタックをプッシュします(3); スタックをプッシュします(4); スタックをプッシュします(5); console.log(スタック); console.log('削除されたスタックの一番上の要素は: '+stack.pop()); console.log('スタックの最上位要素は: '+stack.peek()); console.log('スタックは空ですか: '+stack.isEmpty()); console.log('スタック内の要素数は: ' + stack.size()); console.log('スタック構造の内容は次のとおりです:'); コンソールにログ出力します。 出力は次のようになります。 ビルドに成功しました。 3. 10進数を2進数に変換する10進数を2進数に変換するにはどうすればいいですか? 10 進数を 2 進数に変換するには、10 進数を 2 で割り、結果が 0 になるまで余りをスタックにプッシュし、最後にスタック内の要素を 1 つずつポップして最終結果を取得します。 次の図に示すように: 具体的なコードは次のとおりです。 関数 Stack(){ this.items = []; //スタックにプッシュする Stack.prototype.push = function(element){ this.items.push(要素); } //ポップアウト Stack.prototype.pop = function(){ this.items.pop() を返します。 } //スタックが空かどうかを判断します Stack.prototype.isEmpty = function(){ (this.items.length == 0)の場合{ true を返します。 }それ以外{ false を返します。 } } } 関数decToBin(decNumber){ var stack = 新しい Stack; while(decNumber>0){ // 剰余を取得してスタックに格納します。stack.push(decNumber%2); //新しい除数を取得します。decNumber = Math.floor(decNumber/2); } //スタックの一番上の要素を取得します。var str = ''; while(!stack.isEmpty()){ str += スタック.pop(); } str を返します。 } console.log('100 をバイナリに変換すると次のようになります: '+decToBin(100)); console.log('50 をバイナリに変換すると次のようになります: '+decToBin(50)); console.log('20 をバイナリに変換すると次のようになります: '+decToBin(20)); console.log('34 をバイナリに変換すると次のようになります: '+decToBin(34)); 出力は次のようになります。 以下もご興味があるかもしれません:
|
<<: 9999px に別れを告げる新しい CSS 画像置換テクニック (背景表示と画面外へのテキストの移動)
>>: HTML でテキスト ボックスのプロンプト機能を実装するさまざまな方法
目次1. vue-video-playerをインストールする2. vue-video-playerを...
1. はじめにスロークエリログを有効にすると、MySQL は指定された時間を超えるクエリステートメン...
序文現在、プロジェクトでは、Axios ライブラリが HTTP インターフェース リクエストによく使...
--ホームページのバックアップ1.txtテキスト2. 画像をスキャンする3. PSDデザイン原画(A...
目次序文$属性例: $listeners (公式説明)使用シナリオ要約する序文複数レベルのコンポーネ...
右クリックメニューを無効にする <body oncontextmenu=self.event....
1 ダウンロードアドレスは https://dev.mysql.com/downloads/mysq...
目次1. オブジェクトを使用してオブジェクトを作成する2. コンストラクタを使用してオブジェクトを作...
元データと対象データSQL文を実装する(最大) 選択 店、 月、 最大(dz,fz,sp) が最大値...
問題の説明: CSS アニメーション プロパティを使用すると、ループが最初に読み込まれたときに白いギ...
DIV フローティング効果 (固定位置) は CSS のみで実装されており、IE8、360、Fir...
導入: springboot プロジェクトを実行する Docker の構成は実は非常にシンプルで、L...
目次JavaScript プロトタイプチェーンオブジェクトプロトタイプトップレベルのプロトタイプOb...
目次1. 時計の新しい使い方1.1. ウォッチの使用構文1.2. 複数の属性値を監視する1.3. 参...
今日はvueとmomentで作ったカウントダウンを紹介したいと思います。具体的な内容は以下のとおりで...