加入收藏 | 设为首页 | 会员中心 | 我要投稿 源码网 (https://www.900php.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 编程要点 > 资讯 > 正文

前端进阶:链表的概念和应用

发布时间:2021-06-02 11:04:37 所属栏目:资讯 来源:互联网
导读:副标题#e# 为了实现链表以及链表的操作,首先我们需要先定义链表的基本结构,第一步就是定义节点的数据结构。我们知道一个节点会有自己的值以及指向下一个节点的引用,所以可以这样定义节点: letNode=function(el){ this.el=el; this.next=null; } 接下来

          current = current.next; 

        } 

        previousNode.next = current.next; 

      } 

      length --; 

      return current.el 

    }else { 

      return null 

    } 

}; 

2.6 移除指定节点

移除指定节点实现非常简单,我们只需要利用之前实现好的查找节点先找到节点的位置,然后再用实现过的removeAt即可,代码如下:

// 移除指定节点 

this.remove = (el) => { 

  let idx = this.indexOf(el); 

  this.removeAt(idx); 

}; 

2.7 获取节点长度

这里比较简单,直接上代码:

// 返回链表长度 

this.size = () => { 

  return length 

}; 

2.8 判断链表是否为空

判断链表是否为空我们只需要判断长度是否为零即可:

// 返回链表长度 

this.size = () => { 

  return length 

}; 

2.9 打印节点

打印节点实现方式有很多,大家可以按照自己喜欢的格式打印,这里笔者直接将其打印为数组格式输出,代码如下:

// 将链表转化为数组返回 

this.toArray = () => { 

    let current = head, 

        results = []; 

    while(current) { 

      results.push(current.el); 

      current = current.next; 

    } 

    return results 

};  

这样,我们的单向链表就实现了,那么我们可以这么使用:

let link = new linkedList() 

// 添加节点 

link.append(1) 

link.append(2) 

// 查找节点 

link.indexOf(2) 

// ... 

3.原生javascript实现一条个双单向链表

有了单向链表的实现基础,实现双向链表也很简单了,我们无非要关注的是双向链表的节点创建,这里笔者实现一个例子供大家参考:

let Node = function(el) { 

      this.el = el; 

      this.previous = null; 

      this.next = null; 

 } 

let length = 0 

let head = null  // 用来存储头部元素的引用 

let tail = null  // 用来存储尾部元素的引用 

(编辑:源码网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读