JavaScript链表---双向链表

简介

上一篇介绍了单向链表,我们发现从链表的头部通过next向后遍历链表很简单,但是从后向前遍历却不容易。既然我们可以把下一个节点存起来,那也可以定义一个prev属性,来指向上一个节点,这样就形成了双向链表

在这里插入图片描述

实现

首先在Node类中增加一个prev属性

class Node {
  constructor(element) {
    this.element = element; // 当前节点数据
    this.next = null; // 下一个节点的链接
    this.prev = null; // 上一个节点的链接
  }
}
插入节点

将新节点的next指向给定节点的next,新节点的prev指向给定节点
将给定节点nextprev指向新节点指向新节点,给定节点的next指向新节点
在这里插入图片描述


  insert(item, newElement) {
    let newNode = new Node(newElement);
    let currNode = this.find(item);

    newNode.next = currNode.next;
    newNode.prev = currNode;
    if (currNode.next) {
      currNode.next.prev = newNode;
    }
    currNode.next = newNode;
  }

删除节点

将需要删除节点的prevnext指向需要删除节点的next
将需要删除节点的nextprev指向需要删除节点的prev

在这里插入图片描述


  remove(item) {
    let currNode = this.find(item);
    if (currNode.prev !== null) {
      currNode.prev.next = currNode.next;
    }
    if (currNode.next !== null) {
      currNode.next.prev = currNode.prev;
    }
    currNode.next = null;
    currNode.prev = null;
  }

点击查看源码,在线试一试

快捷入口

JavaScript链表—单向链表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白之旅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值