スタックは、コンプライアンスLIFO(LIFO)原則の順序集合です。追加または削除、新しい要素はスタックの最上部と呼ばれるスタックの同じ端部、に保存されるべきであり、他端がスタックの最下部と呼ばれています。スタックでは、新しい要素が近いスタックの最上部にある、古い要素は、スタックの最下部に近いです。
スタックは、次のメソッドがあります。
プッシュ(要素):要素のスタックは、スタックの最上部に1つ以上の新しい要素を追加します
ポップ():戻り要素が除去されつつ、スタックの要素、スタック要素が除去され
PEEK():戻り値は、要素のスタックの先頭には、要素は駅を変更しないでください
isEmpty():スタックリターンでない要素trueの場合そうでない場合はfalse、スタックが空であるかどうかを決定します
クリア():スタック内のすべての要素を削除します
サイズ()、スタック内の要素の数を返す長さ及び方法の特性が配列に類似しています
説明:
アレイの尾のヘッドがスタックの底であり、スタックがアレイであります
配列は、様々な方法を使用しますので、それは、JavaScriptのビルド・スタックの配列に基づいているため、最初のクラスは、クラスを表す作成し、ここで使用する構文ES6、一つ次の6つの従来の方法を積み重ねるようになりました。
S1。スタックコンストラクタ声明
1 // スタック保存する空の配列要素に宣言スタック・コンストラクタ 2 クラス{スタック 3。 コンストラクタ(){ 4。 この .itemsは= []; 5 } 。6 }
S2。実現プッシュ()メソッド、スタックに要素
、配列要素の端部に、スタック構成のスタックの、すなわち上部をプッシュ方式のアレイを使用。
プッシュ(要素){ this.items.push(要素) }
S3。実現ポップ()メソッド、スタック要素戻る要素
最後のアウトの原則によると、要素を削除すると、最後の要素がスタックに追加された、ポップ方法は、ここで配列を使用しました
ポップ(){ this.items.pop()を返します。 }
S4。スタックに追加最後の要素であるスタックの上部を参照、PEEK()メソッドを実現します
最後の配列インデックス位置の配列要素の性能は、配列の最後の要素は、長さによってアクセスすることができる-1
PEEK(){ 戻りthis.items [this.items.length - 1]。 }
S5。スタックが空であるかどうかを確認するためのisEmpty()メソッドを実現
実際には、配列の長さが0であるかを決定
isEmpty(){ this.items.length === 0を返します。 }
S6。すべての要素のclear()メソッドは、空のスタックを実現
直接配列に空にリセットすることができます
クリア(){ 戻りthis.items = []; }
S7。リアライズサイズ()メソッドは、スタックの長さを返します
配列のパフォーマンスは、配列の長さを返すことです
サイズ(){ 戻りthis.items.length。 }
この時点で、構築されたスタックの配列に基づいて完成し、その後、テストを開始しました!次のコードは、直接使用することができますコピーします。
} PEEK(){ 戻りthis.items [this.items.length - 1]。 } のisEmpty(){ === 0 this.items.lengthリターン; } クリア(){ 戻りthis.items = []; } サイズ(){ this.items.length返す; } } //オブジェクトが第一のスタックインスタンス CONSTスタック=新しいですスタック(); stack.push(12である); //プッシュ stack.push(20) はconsole.log(stack.isEmpty()); // falseに出力 はconsole.log(stack.pop()); //出力20、上部要素20の除去、及び戻り にconsole.log(stack.peek()); //出力12、戻り要素12がまだスタックに格納されている にconsole.log(stack.size( )); //出力1 stack.clear(); //スタックをクリアし、スタックはこの時間では空である )はconsole.log(stack.isEmpty(); //出力をtrueに </ SCRIPT> </ BODY> </ HTML>
彼は後にJavaScriptオブジェクトの実装を構築するためのスタックベースの構造を記述します。再生するピュア困難手、ソースを明記してください!
<HTML> <HTML LANG = " EN"> <HEAD> <メタ文字コード= "UTF-8"> <META NAME = "ビューポート"コンテンツ= "幅=装置幅、初期の規模= 1.0"> <META HTTP -equiv = "X-UA-互換 "コンテンツ= "IE =縁"> <タイトル> </タイトル> </ head> <body> <H1> 設定のスタック試験</ H1> <SCRIPT> //スタック}プッシュ(要素){this.items.push(エレメント);}クラススタック{コンストラクタ(){this.itemsスタック= []保存する空の配列関数宣言要素
POPは(){これを返します。 items.pop();}
PEEK(){戻りthis.items [this.items.length - 1];}
のisEmpty(){this.items.length === 0を返す;}
クリア(){戻りthis.items = [];}
サイズ(){this.items.lengthを返す;}} //最初のインスタンスをオブジェクトのCONSTスタックスタックスタック新しい新=();
stack.push(12である); //プッシュstack.push(20 );にconsole.log(stack.isEmpty()) 。//出力falseconsole.log(stack.pop()); //出力20、上部要素20の除去、及び戻りにconsole.log(stack.peek()); //出力12は、返されエレメント12はまだスタックに格納されます。
console.log(stack.size()); //出力1
stack.clearは(); //スタックをクリアし、スタックがこの時間にconsole.logに空である(stack.isEmpty()); //出力真</ SCRIPT> </ body> </ html>この