javascript 数据结构和算法读书笔记 > 第三章 列表

1. 结构分析

列表首先要有以下几个属性:

  listSize 长度

  pos 当前位置

  dataStore 数据

我们要通过以下方法对上面三个属性进行操作:

  length() 获取长度 | getPos() 获取当前位置   |   toString() 打印list内容

  add(ele) 顺序添加元素   |   insert(newEle, afterEle) 在某元素后插入元素  |  remove(ele) 删除某元素

  clear() 清空列表  |  find(ele) 查询元素位置  |  get(index) 根据位置获取元素  |  contain(ele) 是否包含某元素

  prev() 下标前移一位  |  next() 下标后移一位   |   front() 定位到头部  |   end() 定位到尾部

2. 实现:

function List(){

    this.listSize = 0;

    this.dataStore = [];

    this.pos = 0;



    this.length = function(){ 

        return this.listSize;

    };

    this.getPos = function(){

        return this.pos;

    };

    this.prev = function(){

        this.pos--;

    };

    this.next = function(){

        this.pos++;

    };

    this.front = function(){

        this.pos = 0;

        return 0;

    };

    this.end = function(){

        this.pos = this.listSize;

        return this.listSize;

    };

    this.find = function(ele){

        for(var i=0; i<this.listSize; i++){

            if(this.dataStore[i] === ele){

                return i;

            }

        }

        return -1;

    };

    this.add= function(ele){

        this.dataStore[this.listSize++] = ele;

    };

    this.insert = function(ele, afterEle){

        var index = this.find(afterEle);

        if(index > -1){

            this.dataStore.splice(index, 0, ele);

            this.listSize++;

            return true;

        }else{

            return false;

        }

    };

    this.remove = function(ele){

        var index = this.find(ele);

        if(index > -1){

            this.dataStore.splice(index, 1);

            this.listSize--;

            return true;

        }

        return false;

    };

    this.clear = function(){

        delete this.dataStore;

        this.dataStore = [];

        this.listSize = this.pos = 0;

    };

    this.contains = function(ele){

        if(this.find(ele) > -1){

            return true;

        }else{

            return false;

        }

    };

    this.get = function(index){

        return this.dataStore[index];

    };

    this.toString = function(){

        return this.dataStore.toString();

    };

}

3. 应用:

var users = ['Jenny', 'Penny', 'Tenny', 'Anny', 'Lily'];

var list = new List();

for (var i = 0; i <users.length - 1; i++) {

    list.add(users[i]);

}

for(list.front(); list.getPos()<list.length(); list.next()){

    console.info(list.getPos() + ":" + list.get(list.curPos()));

}

 

  

你可能感兴趣的:(JavaScript)