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 でテキスト ボックスのプロンプト機能を実装するさまざまな方法
この記事では主に、NUXT の validate メソッドに基づいてフォーム検証を実装する方法につい...
目次1. SQLコマンドを含むSQLスクリプトファイルを作成する2. SQLスクリプトファイルを実行...
1. テーブル構造テーブル人id名前1あなた2あなた(スペース) 3あなた(スペース2つ) 2. ク...
<marquee> タグはペアで表示されるタグです。最初のタグ <marquee...
既存のイメージから新しいイメージを構築することは、Dockerfile ドキュメントを通じて行われま...
検索パフォーマンスは最速から最遅まで次のとおりです (私が聞いたところによると)。 1 番目: ti...
前回の記事でMySQLサービスが起動しない問題が解決したと分かった後、パスワードなしでrootユーザ...
コード: <input type="text" class="t...
MySQL は人気のオープンソースデータベース管理システムとして多くのユーザーが利用しています。デー...
Dockerコンテナの状態遷移図2度目の実戦 [root@localhost ~]# docker ...
この記事では、ログインボックスのドラッグ効果を実現するためのJavascriptの具体的なコードを参...
この記事では、ボタン切り替え画像を実現するためのVueの具体的なコードを例として紹介します。具体的な...
Mysql 8.0 のインストールの問題とパスワードのリセット1: MySqlをダウンロードする公式...
この記事の例では、メモ帳機能を実装するためのVueの具体的なコードを参考までに共有しています。具体的...
1.ピクセルpx はピクセルの略語で、画面解像度に対する相対的な長さの単位です。 2. えむ参照は親...