ホームページ >ウェブフロントエンド >jsチュートリアル >Javascriptのデータ構造とアルゴリズム一覧を詳しく解説_JavaScriptスキル
まえがき: 日常生活で、人はよくリストを使います。たとえば、買い物に行くときに、すべての物を買うために、行く前に買いたいもののリストを作ることができます。私たちが使っていたリストや、私たちが幼い頃に学校に通っていたとき、学校は試験のたびに、その試験で得点した上位 10 人の生徒の順位と成績表をリストアップしていました。これらはすべてリストの例です。 。私たちはコンピューターでもリストを使用しますが、リストはどこで使用するのに適しているのでしょうか?使用に適さない場所はどこですか?
使用に適しています: リスト内の要素がそれほど多くない場合、リスト内の要素を検索または並べ替える際の効率が非常に高いため、リストを使用できます。 逆に: リスト内の要素が非常に多い場合。リストの場合、リストは適切ではなくなります。
1: リストの抽象データ型定義
リストの抽象データ型を設計するには、リストにどのような属性が必要か、リストに対してどのような操作が実行されるべきかなど、リストの定義を与える必要があります。
リストは順序付けられたデータのセットです。各リスト内のデータ項目は要素と呼ばれます。 JavaScript では、リスト内の要素は任意のデータ型にすることができます。リストに格納できる要素の数については、事前の合意はありません。ただし、要素の数は実際に使用されるプログラム メモリによって制限されます。
ここでリストを設計したいと思います。その後、リストの実装と、リストにどのような属性とメソッドを含めるかについて考えます。もちろん、以下の設計は、『JavaScript データ構造とアルゴリズム』のデモに基づいています。これまでのところ、将来プログラムを作成する際の参考として独自の抽象クラスを設計する方法を学ぶことができます。この本のデモを学ぶ上で最も重要なことは、その設計アイデアとコードの書き方を学ぶことです。これらには次の属性があります。
1. listSize (属性): listSize 変数を使用して、リスト内の要素の数を保存します。
2. pos (属性): リストの現在位置、要素のインデックス。
3. dataStore (属性): 要素数を保存するために空の配列を初期化します。リスト内の特定の要素を取得したい場合は、dataStore[pos];
すべての方法は次のリストで説明されており、1 つずつ紹介するわけではありません。
2: リストクラスの実装方法
上で定義したリスト抽象データ型に従って、次のようにコンストラクター プロトタイプ モードを通じて次の List クラスを実装できます。
// リストの現在の位置は何ですか
This.pos = 0;
// リスト要素を保存するために空の配列を初期化します
This.dataStore = [];
}
List.prototype = {
//リストの最後に要素を追加します
追加: 関数(要素) {
var self = this;
self.dataStore[this.listSize] = 要素;
}、
// リストから要素を削除します
削除: function(element) {
var self = this;
var curIndex = self.find(element);
If(curIndex > -1) {
self.dataStore.splice(curIndex,1);
—self.listSize;
true を返します;
}
return false;
}、
// リスト内の要素を検索し、インデックスを返します
検索: function(element) {
var self = this;
for(var i = 0,dataLen = self.dataStore.length; i
If(self.dataStore[i] == 要素) {
return i;
}
}
return -1;
}、
// リスト内の要素の数を返します
長さ: function() {
return this.listSize;
}、
// リスト内の要素を表示します
toString: function(){
return this.dataStore;
}、
/*
* 指定した要素
の後に要素を挿入します
* @param要素の現在の要素
* @param elementAfter この要素の後に現在の要素を挿入します
*/
挿入: function(element,elementAfter){
var self = this;
var insertPos = self.find(elementAfter);
If(insertPos > -1) {
self.dataStore.splice(insertPos 1,0,element);
self.listSize;
true を返します;
}
return false;
}、
// リスト内のすべての要素をクリアします
クリア: function() {
削除 this.dataStore;
This.dataStore = [];
this.listSize = this.pos = 0;
}、
// 指定された要素がリストにあるかどうかを判断します
含まれるもの: function(element) {
var self = this;
for(var i = 0,ilen = self.dataStore.length; i
If(self.dataStore[i] == 要素) {
return true;
}
}
return false;
}、
// リスト内の現在の要素を最初の位置に移動します
フロント: function(){
This.pos = 0;
}、
// リスト内の現在の要素を最後の位置に移動します
終了: function(){
this.pos = this.listSize - 1;
}、
// 現在の位置を 1 つ前に戻します
前: function(){
If(this.pos > 0) {
—this.pos;
}
}、
// 現在位置を 1 つ前に移動します
次: function(){
If(this.pos
This.pos;
}
}、
// リストの現在位置を返します
CurPos: function(){
return this.pos;
}、
// 現在位置を指定位置に移動
MoveTo: function(n) {
This.pos = n;
}、
// 現在の位置にある要素を返します
GetElement:function(){
return this.dataStore[this.pos];
}
};
上記と同様: 上記と同じ数のメソッドを含むリスト クラスを実装します。もちろん、他のメソッドを拡張してリスト クラスの実装を強化することもできます。最も重要なことは、上記のコーディング方法を学ぶことです。