1.キューとスタックの簡単な紹介
1.1。キューの基本概念
キュー:ファーストインファーストアウト(FIFO)をサポートするコレクションです。つまり、最初に挿入されたデータが最初にフェッチされます!
下の図に示すように:
1.2。スタックの基本概念
スタック:最後のファーストアウト(LIFO)をサポートするコレクションです。つまり、後で挿入されるデータが最初にフェッチされます!
下の図に示すように:
2。JavaScriptにキューとスタックを実装します
JavaScriptでは、キューと配列が主に配列を介して実装されています。 JSアレイには、キューやスタックを簡単に実装できるようにするための次の方法が提供されています。
•シフト:最初の要素を配列から削除し、この要素の値を返します。
•Unshift:配列の先頭に1つ以上の要素を追加して、新しい長さを返します
•プッシュ:中央の終わりに要素を追加して、新しい長さを返します
•POP:アレイから最後の要素を削除し、この要素の値を返します。
2.1。キューを実装します
<スクリプトタイプ= "text/javascript"> //配列を作成してキューvar a = new array(); console.log(a); // unshift:配列の先頭に1つ以上の要素を追加して、新しい長さを返すconsole.log( "Enter"); a.unshift()console.log(a); // -----> a.unshift(); console.log(a); // ----->、a.unsole.log(a); //- - ---->、a.unshift(); console.log(a); // ----->、a.unshift(); console.log(a); // ---->、、a.unsole.log(a); // ---->、、、、,, Console .log( "exit、first in、first out"); console.log(a); // pop:配列から最後の要素を削除し、この要素の値を返しますa.pop(// -----> console.log(a); a.pop(); // -----> console.log(a); a.pop(); // -----> console.log(a); a.pop(); // -----> console.log(a); a.pop();
Googleブラウザコンソールの出力効果を以下の図に示します。
2.2。スタックの実装
<script type = "text/javascript"> // stack var a = new array(); console.log(a); // pushをシミュレートするための配列を作成します:配列の最後に1つ以上の要素を追加し、新しい長さを返しますconsole.log( "stack"); a.push()console.log(a); // -----> a.push(); console.log(a); // ----->、a.push(); console.log(a); // ------ - >、a.push(); console.log(a); // ----->、a.push(); console.log(a); // ----> ,, a.push(); console.log(a); // ----> ,,, console.log( "スタックを出て、最初に "); console.log(a); // pop:配列から最後の要素を削除し、この要素の値を返しますa.pop(// -----> console.log(a); a.pop(); // -----> console.log(a); a.pop(); // -----> console.log(a); a.pop(); // -----> console.log(a); a.pop();
Googleブラウザコンソールの出力効果を以下の図に示します。
2.3。プッシュメソッドとUnshiftメソッドのパフォーマンステスト
配列のプッシュおよびUnshiftメソッドは、現在の配列に要素を追加できます。違いは、最後にプッシュが追加され、最初にUnshiftが追加されることです。原則から、Unshiftの効率は比較的低いことを知ることができます。その理由は、要素を追加するたびに、既存の要素を1つの位置に移動するからです。しかし、効率の違いはどれくらいですか?以下で簡単なテストをしましょう。
<script type = "text/javascript">/*「var s =+newdate();」のトリック説明の説明コードは次のとおりです。=+ ]; var starttime = +new date(); //+new date()はnew date()。valueof()に相当し、現在の時間のミリ秒を返します//パフォーマンステスト(var i =; i <; i ++){arr.push(i); } var endtime =+new date(); console.log( "プッシュメソッドを呼び出すには、配列に要素を追加するには時間がかかります"+(endtime-starttime)+"ms"); starttime = +new Date(); arr = []; //(var i =; i <; i ++){arr.unshift(i); } endtime =+new date(); console.log( "unshiftメソッドを呼び出すには、配列に要素を追加するには時間がかかります"+(endtime-starttime)+"ms"); </script>このコードは、それぞれ100,000のプッシュおよびUNShift操作を実行し、Googleブラウザーで1回実行します。結果は、次の図に示されています。
Unshiftはプッシュの約100倍遅いことがわかります!したがって、特に大きなアレイについては、日常生活には慎重にUnshiftを使用する必要があります。 Unshiftの効果を達成する必要がある場合は、アレイの逆方式を使用して、アレイを逆にすることができます。まず、プッシュで配列に配置する要素を追加し、次に再度逆に実行して、Unshiftの効果を実現します。例えば:
<script type = "text/javascript"> // stack var a = new array(); //プッシュメソッドをシミュレートするアレイを作成して、要素を追加してa.push(); a.push(); a.push(); console.log( "アレイの前の配列の順序の順序は、リバースされています。アレイを反転させる可能性のある逆。最初にプッシュで配列に配置する要素を追加してから再び逆に実行すると、Unshiftの効果がa.Reverse();
Googleブラウザコンソールの出力効果を以下の図に示します。
実行中の結果から判断すると、配列要素の順序が逆になりました。
2.4。逆方向のパフォーマンステスト
リバースのパフォーマンスはどのくらいですか?もう一度テストしましょう:
<script type = "text/javascript"> var arr = []、s = +new Date; for(var i =; i <; i ++){arr.push(i); } //逆方向のメソッドを呼び出して、array arr.Reverse()の要素の順序を逆転させます。 console.log( "アレイ内の要素の順序を逆にするためのリバースメソッドを呼び出す:"+(+new Date -s)+"msec"); </script>Googleブラウザコンソールの出力効果を以下の図に示します。
実行効果から、逆方式のパフォーマンスが非常に高く、自信を持って使用できることがわかります。
上記は、JavaScriptの配列を介してキューとスタックを実装する概要であり、プッシュ、Unshift、および逆のパフォーマンスの利点と欠点を、大きな配列で操作するだけでテストしました。
上記は、編集者が導入したJavaScriptアレイ実装データ構造のキューとスタックです。私はそれが誰にでも役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は、すべての人に時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!