加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

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

发布时间:2021-06-02 17:16:05 所属栏目:编程 来源:互联网
导读:2.1 界说链表布局 为了实现链表以及链表的操纵,起首我们必要先界说链表的根基布局,第一步就是界说节点的数据布局。我们知道一个节点会有本身的值以及指向下一

          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  // 用来存储尾部元素的引用 

(编辑:湖南网)

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

热点阅读