JavaScriptデータ構造----リスト

3480 ワード

JavaScriptデータ構造----リスト
リストは順序正しいデータのセットです.各リストのデータを要素と呼び、リストに保存できる要素はどれぐらいですか?リストクラスは、抽象的なデータタイプによって、Listクラスを実現することができます.
function List() {
    this.listSize = 0;        //      
    this.pos = 0;
    this.dataStore = []       //        
    this.clear = clear;       //     
    this.find = find;         //     
    this.toString = toString; //           
    this.insert = insert;     //     
    this.append = append;     //          
    this.remove = remove;     //         
    this.front = front;       //                 
    this.end = end;           //                  
    this.prev = prev;         //          
    this.next = next;         //          
    this.length = length;     //           
    this.currPos = currPos;   //          
    this.moveTo = moveTo;     //             
    this.getElement = getElement; //       
    this.contains = contains;  //            
}
apped:リストに要素メソッドapped()を追加し、リストの次の位置に新しい要素を追加します.この位置は変数listSizeの値にちょうど等しいです.新しい要素が位置につくと変数listSizeに1を加算します.
function append(element) {
    this.dataStore[this.listSize++] = element;
}
find:要素find()をリストで検索する方法は、配列オブジェクトをdataStoreで反復して、所与の要素を検索する.見つかったら、要素のリスト内の位置を返します.そうでなければ-1を返します.
function find(element) {
     for (var i = 0; i < this.dataStore.length; i++) {
        if (this.dataStore[i] = element) {
            return i;
        }
     }
     return -1;
}
remove:リストから要素を削除することで、リストから要素を削除することができます.まず、リストから要素を見つけて削除し、また、下の配列オブジェクトを調整して、要素を削除した後に残した空白を塗りつぶします.remove()方法はfind()方法で戻った位置を用いて配列dataStoreを切り取ります.配列が変更された後、変数listSizeの値を1つ減らして、リストの最新の長さを反映します.要素を削除したらtrueに戻ります.そうでないとfalseに戻ります.
function remove(element) {
    var foundAt = this.find(element);
    if (foundAt > -1) {
        this.dataStore.splice(foundAt, 1);
        this.listSize--;
        return true;
    }
    return false;
}
length:リストにはいくつの要素がありますか?
function length() {
    return this.listSize;
}
toString:リストの要素を表示する
function toString() {
    return this.dataStore;
}
insert:リストに要素insert()を挿入する方法は、要素をどの位置に挿入するかを知る必要があります.挿入とは、リストに挿入された要素のうちのいずれかを指すと仮定してもいいです.
function insert(element, after) {
    var insertPos = this.find(after);
    if (insertPos > -1) {
        this.dataStore.splice(insertPos + 1, 0, element);
        this.listSize++;
        return true;
    }
    return false;
}
クリアリストのすべての要素clear()メソッドはdelete操作子を使ってdataStoreを削除し、次の行に空の配列を作成します.最後の行のlistSizeとPosの値は0に設定されています.これは新しい空のリストです.
function clear() {
    delete this.dataStore;
    this.dataStore = [];
    this.listSize = this.pos = 0;
}
constains:与えられた値がリストにあるかどうかを判断する.
function contains(element) {
    for (var i = 0; i < this.dataStore.length; i++) {
        if (this.dataStore[i] == element) {
            return true;
        }
    }
    return false;
}
リストを巡回すると、これらの方法はリスト内の移動を許可します.
function front() {
    this.pos = 0;
}

function end() {
    this.pos = this.listSize - 1;
}

function prev() {
    if (this.pos > 0) {
        this.pos--;
    }
}

function next() {
    if (this.pos < this.listSize - 1) {
        this.pos++;
    }
}

function currPos() {
    return this.pos;
}

function moveTo(position) {
    this.pos = position;
}

function getElement() {
    return this.dataStore[this.pos];
}
参考資料:JavaScript高級プログラム設計JavaScript MDN Data Structures and Algorithms with JavaScript