数据结构——列表

javascript数据结构-列表
这个数据结构的特性,总结下:基于一个数组,针对此数组封装很多的一个快捷方法从而组成一个数据列表类
项目中的列表数据完全可以放在这样的一个列表中,像数组的方法,完全可以在这个列表结构中重写下,每次调用方法就可以了

/*
    定义List类
    javascript数据结构-列表
    这个数据结构的特性,总结下:基于一个数组,针对此数组封装很多的一个快捷方法从而组成一个数据列表类
    项目中的列表数据完全可以放在这样的一个列表中,像数组的方法,完全可以在这个列表结构中重写下,每次调用方法就可以了
*/
class List {
    constructor() {
        this.listSize = 0; //初始化元素个数为0
        this.pos = 0; //初始化位置为0
        this.dataStore = []; //初始化空数组来保存列表元素
    }

    // 数据初始化
    setData(data) {
        this.listSize = data.length;
        this.pos = 0;
        this.dataStore = JSON.parse(JSON.stringify(data));
    }

    // 末尾插入元素
    append(element) {
        this.dataStore[this.listSize++] = element;
    }

    // 查找列表中的某一个元素
    find(element) {
        for (var i = 0; i < this.dataStore.length; i++) {
            if (this.dataStore[i] == element) {
                return i;
            }
        }
        return -1;
    }

    // 删除列表中的某一元素
    remove(element) {
        var foundAt = this.find(element);
        if (foundAt > -1) {
            this.dataStore.splice(foundAt, 1);
            --this.listSize;
            return true;
        }
        return false;
    }

    // 返回列表中总的元素个数
    length() {
        return this.listSize;
    }

    // 显示列表元素
    toString(element) {
        this.dataStore[this.listSize++] = element;
    }

    // 向列表某个位置添加一个元素
    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 this.dataStore;
        this.dataStore = [];
        this.listSize = this.pos = 0;
    }

    // 将列表的位置移到第一个位置上
    front() {
        this.pos = 0;
    }

    // 将列表的位置移到最后一个位置上
    end() {
        this.pos = this.listSize - 1;
    }

    //将当前位置前移一位
    prev() {
        if (this.pos > 0) {
            this.pos--;
        } else {
            console.log("您当前已在首位");
        }
    }

    // 将当前位置后移一位
    next() {
        if (this.pos < this.listSize - 1) {
            ++this.pos;
        } else {
            console.log("您当前已在末尾");
        }
    }

    //   将当前位置移动到指定位置
    moveTo(position) {
        if (position < 0 || position > this.listSize - 1) {
            console.log("请输入正确的位置");
        } else {
            this.pos = position;
        }
    }

    // 返回列表的当前位置
    currPos() {
        return this.pos;
    }

    // 返回当前位置的元素
    getElement() {
        return this.dataStore[this.pos];
    }

    // 判断给定值是否在列表中
    contains(element) {
        return this.dataStore.includes(element);
    }
}

let a = new List();
console.log(a.length());

module.exports = List;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值