JavaScript链表

    //实现列表类
    function list() {
        this.listSize = 0;//元素个数 属性
        this.pos = 0;//当前位置 属性
        this.length = length;//个数 属性
        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.currPos = currPos;//返回当前位置
        this.moveTo = moveTo;//移动到指定位置
        this.getElement = getElement;//返回当前位置的元素
        this.contains = contains;//匹配是否相似
    }
 
    //添加
    function append(element) {
        this.dataStore[this.listSize++] = element;
    }
 
    //查找列表中某一元素
    function find(element) {
        //通过遍历找到该值得位置
        for (var i = 0; i < this.dataStore.length; i++) {
            if (this.dataStore[i] == element) {
                return i;
            }
        }
        return -1;
    }
 
    //删除
    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(after);
        if(insertPos >-1)
        {
            //分割数组,在首位插入值
            this.dataStore.splice(insertPos, 0, element);
            //记录列表大小
            ++this.listSize;
            return true;
        }
        return false;
    }
 
    //清空列表
    function clear() {
        //delete操作符删除数组dataStore 
        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 names = new list();
    names.append("1");
    names.append("2");
    names.append("3");
    names.append("4");
    names.append("5");
    //names.remove("3");
    //names.front();
    //names.next();
posted @ 2016-12-07 15:37  流星泪  阅读(251)  评论(0编辑  收藏  举报