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()));
}

  

上一篇:关于smali插桩


下一篇:访问权限PPP(public、private、protected、default)之成员变量、成员变量权限解析