データ構造とアルゴリズム(javascriptバージョン)のリスト

8430 ワード

リスト
概要
日常生活では、リストをよく使います.準備事項リスト、買い物リスト、歌詞リスト、歌曲リストなどの注意:データ構造が複雑であれば、リストの意味は大きくなくなります.
1.リストの抽象
リストのプロパティ
意味
listSize(atribute)
リストの要素の個数
pos(atribute)
リストの現在位置
length(atribute)
リストの要素の個数を返します.
clear(method)
リストのすべての要素をクリアします.
toString(method)
現在のリストの文字列形式を返します.
getElement(method)
現在位置の要素を返します.
insert(method)
既存の要素の後ろに新しい要素を挿入します.
apped(method)
リストの末尾に新しい要素を挿入します.
remove(method)
要素をリストから削除します.
front(method)
リストの現在位置を最初の要素に移動します.
end(method)
リストの現在位置を最後の要素に移動します.
prev(method)
現在の位置を一つ後ろに移動します.
next(method)
現在の位置を一つ前に移動します.
currPos(method)
リストの現在位置を返します.
moveTo(method)
現在位置を指定の場所に移動します.
具体的なコードの実装
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;
    function find(element){
        for (var i = 0; i < this.dataStore.length; i++) {
            if(this.dataStore[i] ==element){
                return i;
            }
        }
        return -1;
    }
    function append(element){
        this.dataStore[this.listSize++] = element;
    }
    function remove(element){
        var foundAt = this.find(element);
        if(foundAt > -1){
            this.dataStore.splice(foundAt,1);
            --this.listSize;
            return true;
        }
        return false;
    }
    function length(){
        return this.listSize;
    }
    function toString(){
        return this.dataStore;
    }
    function insert(element,after){
        var insertPos = this.find(element);
        if(insertPos > -1){
            this.dataStore.splice(insertPos,0,element);
            ++this.listSize;
            return true;
        }
        return false;
    }
    function clear(){
        delete this.dataStore;
        this.dataStore = [];
        this.listSize = this.pos= 0;
    }
    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];
    }
}
/* var movies = read('movies.txt'); alert(movies);*/