资讯专栏INFORMATION COLUMN

javascript实现数据结构中的列表结构

feng409 / 839人阅读

摘要:定义构造列表的函数列表的元素个数列表的当前位置列表数组列表的末尾添加新元素找到指定元素的位置返回列表的字符串形式在现有元素后插入新元素从列表中删除元素清空列表中的所有元素将列表的当前位置移到第一个元素将列表的当前位置移到最后一个元素将当前位

定义构造列表的函数

function List() {
    
    this.listSize = 0;   列表的元素个数
 
    this.pos = 0;    列表的当前位置

    this.dataStore = [];    列表数组

    this.append = append;    列表的末尾添加新元素

    this.find = find;    找到指定元素的位置

    this.toString = toString;     返回列表的字符串形式

    this.insert = insert;    在现有元素后插入新元素

    this.remove = remove;    从列表中删除元素

    this.clear = clear;    清空列表中的所有元素

    this.front = front;    将列表的当前位置移到第一个元素

    this.end = end;    将列表的当前位置移到最后一个元素

    this.next = next;    将当前位置后移一位

    this.hasNext;    判断是否有后一位

    this.hasPrev;    判断是否有前一位

    this.length = length;   返回列表元素的个数
 
    this.currPos = currPos;    返回列表的当前位置

    this.moveTo = moveTo;    将列表的当前位置移动到指定位置

    this.getElement = getElement;    返回当前位置的元素

    this.contains = contains; 判断给定元素是否在列表中
}

实现元素插入函数

function append(element) {
    this.dataStore[this.listSize++] = element;
}

找到元素函数

function find(element) {
    for (let i = 0; i < this.listSize; i++) {
        console.log(i);
        if (element == this.dataStore[i]) {
            return i;
        }
    }

    return -1;
}

删除列表中的某个元素

function remove(element) {
    let findAt = this.find(element);
    if (findAt > -1) {
        this.dataStore.splice(findAt, 1);
        --this.listSize;
        return true;
    }
}

获得列表的长度

function length() {
    return this.listSize;
}

返回列表的字符串类型数据

function toString() {
    return this.dataStore;
}

在列表中指定元素后插入元素

function insert(element, after) {
    let insertAt = this.find(after);
    if (insertAt > -1) {
        this.dataStore.splice(insertAt + 1, 0, element);
        this.listSize++;
        return true;
    }
    return false;
}

清空整个列表

function clear() {
    delete this.dataStore;
    this.dataStore = [];
    this.listSize = this.pos = 0;
}

列表是否包含某个元素

function contains(element) {
    for (let i = 0; i < this.listSize; 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) {
    if (position < this.listSize - 1) {
        this.pos = position;
    }
}

获得当前位置的元素

function getElement() {
    return this.dataStore[this.pos];
}

是否有下一个元素

function hasNext() {
    return this.pos < this.listSize - 1;
}

是否有上一个元素

function hasPrev() {
    return this.pos > 0;
}

//初始化一个列表
let list = new List();
list.append("jianguang");
list.append("yinjun");
list.append("jiangsssuang");
list.append("yinssjun");


移动到第一个元素位置并且显示
list.front();
print(list.getElement());
移动向前一个元素位置,并且显示
list.next(); 
print(list.getElement());

还可以测试列表的其他数据来通过列表实现想要的效果

欢迎评论以及留言,同时欢迎关注我的博客定时不断地更新我的文章 陈建光的博客

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/94339.html

相关文章

  • JavaScript数据结构和算法

    摘要:栈被称为一种后入先出的数据结构。散列使用的数据结构叫做散列表。这些操作需要求助于其他数据结构,比如下面介绍的二叉查找树。 前言 在过去的几年中,得益于Node.js的兴起,JavaScript越来越广泛地用于服务器端编程。鉴于JavaScript语言已经走出了浏览器,程序员发现他们需要更多传统语言(比如C++和Java)提供的工具。这些工具包括传统的数据结构(如链表,栈,队列,图等),...

    EastWoodYang 评论0 收藏0
  • 数据结构与算法JavaScript (不定时更新)

    摘要:每个列表中的数据项称为元素。栈被称为一种后入先出,的数据结构。散列使用的数据结构叫做散列表。不包含任何成员的集合称为空集,全集则是包含一切可能成员的集合。因此二叉搜索树需要平衡,即左右子树高度要相近。 楼楼非计算机专业,但是对计算机也还算喜欢。个人理解若有偏差,欢迎各位批评指正! 对于数据结构和算法一直是我的薄弱环节,相信大多数前端工程师可能多少会有些这方面的弱点,加上数据结构和算法本...

    levius 评论0 收藏0
  • Javascript数据结构和算法》笔记-「字典和散列表

    摘要:我经常在业务代码中把数据处理成这种字典的数据结构获取的方法哈希表在学习了类之后,我们会学习散列表,也就是哈希表。 《Javascript数据结构和算法》笔记-「字典和散列表」 集合、字典、散列表存储的都是「不重复」的数据结构 集合:我们更关注每一个元素的值,并把其作为主要元素 字典:我们用[键,值]的形式来存储数据 散列表: 跟字典类似,也会是用[键,值]的形式来存储数据 但是「字...

    wenyiweb 评论0 收藏0
  • 算法系列——JavaScript中广度优先搜索思想实现

    摘要:散列表上面的地图向我们展示了如何用广度优先搜索的思想找到北京到广州的最短路线。在广度优先搜索中,我们需要用到队列的这种思想来实现查找。建立了下面这个模型武汉广州西藏上海上海武汉广州代码完整实现,利用递归和广度优先搜索的思想实现。 什么是广度优先搜索? 如果只是是背概念,幼儿园的小朋友都能背下来念给你听。 假设看这篇文章的都和我一样是个前端工程师,我们要从广度优先搜索(BFS)中学到什么...

    everfly 评论0 收藏0

发表评论

0条评论

feng409

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<