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 でテキスト ボックスのプロンプト機能を実装するさまざまな方法
WeChatコンポーネントの形式で提供されます。コンポーネント内部ではasync/awaitが使用さ...
問題の説明私たちのプロジェクトでは、水平方向のテーブルが一般的ですが、必要に応じて垂直方向のテーブル...
この記事では、JavaScriptで画像のプリロードと遅延ロードを実装するための具体的なコードを参考...
MySQL での置換例の詳細な説明replace into は insert と似ていますが、rep...
このセクションから、http モジュールの実装原理について説明します。http モジュールで非常に重...
MySQLグループソートで上位Nを見つけるテーブル構造grp でグループ化し、num で並べ替えて、...
主に低バージョンのブラウザ向け<!-- --> は HTML コメント タグです。上位バ...
正直に言うと、この質問には MySQL のコア知識がかなり必要で、コンピュータ ネットワークの知識を...
Web 標準に準拠した Web ページの構築は、jb51.net が常に全員と議論しているトピックで...
目次1. キーワード2. 脱構築3. 文字列4. 正規化5. 配列6. 機能7. オブジェクト8.シ...
個人的には、WeChat アプレットの開発フレームワークは VUE と概ね似ていると感じていますが、...
目次1. リテラル値でオブジェクトを作成する2. 新しいキャラクターを使ってオブジェクトを作成する3...
ElasticSearch クラスターは、クラスターを構築するための動態請求的方式と靜態配置文件をサ...
自宅のルーターが300Mの帯域幅を80Mに強制的に減らしたため、3205Uソフトルーターを購入しまし...
以下の内容では、隣接リストを使用してツリー構造を保存する MYSQL のプロセスとソリューションを紹...