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

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

发布时间:2021-06-03 18:39:44 所属栏目:资讯 来源:互联网
导读:2.1 定义链表结构 为了实现链表以及链表的操作,首先我们需要先定义链表的基本结构,第一步就是定义节点的数据结构。我们知道一个节点会有自己的值以及指向下一

          current = current.next; 

        } 

        node.next = current; 

        previousNode.next = node; 

        length++; 

        return true 

      } 

    }else { 

      return false 

    } 

}; 

2.4 根据节点的值查询节点位置

根据节点的值查询节点位置实现起来比较简单,我们只要从头开始遍历,然后找到对应的值之后记录一下索引即可:

// 查询节点所在位置 

this.indexOf = (el) => { 

    let idx = -1, 

        curIdx = -1, 

        current = head; 

    while(current) { 

      idx++ 

      if(current.el === el) { 

        curIdx = idx 

        break; 

      } 

      current = current.next; 

    } 

    return curIdx 

}; 

这里我们之所以要用idx和curIdx两个变量来处理,是因为如果用户传入的值不在链表里,那么idx的值就会有问题,所以用curIdx来保证准确性。

2.5 移除指定位置的节点

移除指定位置的节点也需要判断一下边界条件,可插入节点类似,但要注意移除之后一定要将链表长度-1,代码如下:

// 移除指定位置的元素 

this.removeAt = (pos) => { 

    // 检测边界条件 

    if(pos >=0 && pos < length) { 

      let previousNode = null, 

               current = head, 

               curIdx = 0; 

      if(pos === 0) { 

        // 如果pos为第一个元素 

        head = current.next 

      }else { 

        while(curIdx++ < pos) { 

          previousNode = current; 

(编辑:晋中站长网)

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

热点阅读