JavaScript 链表定义与使用方法示例

JavaScript 链表定义与使用方法示例攻略

链表是一种常用的数据结构,它由多个节点组成,每个节点包含一个值和指向下一个节点的指针。这篇文章将会详细介绍JavaScript中链表的定义方法以及常用的链表操作方法。

定义链表

在JavaScript中,我们可以使用对象来定义一个链表。一个链表节点可以用一个对象来描述,该对象至少应该包含一个值val和一个指向下一个节点的指针next。链表的头节点可以用一个变量来表示,初始值为null

// 定义链表节点
class ListNode {
  constructor(val, next = null) {
    this.val = val;
    this.next = next;
  }
}

// 定义链表头节点
let head = null;

插入节点

插入节点是链表的一个常用操作,可以在任意位置插入一个节点。假设我们要在链表的第2个位置插入一个值为3的节点,实现方法如下:

// 定义节点
const newNode = new ListNode(3);

// 插入节点
if (!head) { // 特判链表为空
  head = newNode;

} else {
  let prev = null; // 定义前一个节点
  let cur = head; // 定义当前节点
  let count = 1; // 计数器

  while (count < 2) { // 找到要插入的位置
    prev = cur;
    cur = cur.next;
    count++;
  }

  prev.next = newNode; // 插入节点
  newNode.next = cur;
}

删除节点

删除指定节点是链表的另一个常用操作。假设我们要删除链表中第3个位置的节点,实现方法如下:

if (!head) { // 特判链表为空
  return null;
}

let prev = null; // 定义前一个节点
let cur = head; // 定义当前节点
let count = 1; // 计数器

while (count < 3) { // 找到要删除的位置
  prev = cur;
  cur = cur.next;
  count++;
}

prev.next = cur.next; // 删除节点

示例说明1:反转链表

反转链表也是一个常规操作,假设我们有一个链表是1->2->3->4->null,现在要求将它反转为4->3->2->1->null。实现方法如下:

// 定义链表节点
class ListNode {
  constructor(val, next = null) {
    this.val = val;
    this.next = next;
  }
}

// 定义链表头节点
let head = new ListNode(1);
head.next = new ListNode(2);
head.next.next = new ListNode(3);
head.next.next.next = new ListNode(4);

// 反转链表
let prev = null;
let cur = head;

while (cur) {
  let nextNode = cur.next;
  cur.next = prev;
  prev = cur;
  cur = nextNode;
}

head = prev;

console.log(head); // 4->3->2->1->null

示例说明2:链表中的环

在一个链表中,每个节点的指针都指向下一个节点,但是在某些情况下,一个节点的指针会指向前面的某个节点,从而形成环。如何判断一个链表中是否存在环呢?假定我们有一个链表是1->2->3->2->4,现在要求判断它是否存在环。实现方法如下:

// 定义链表节点
class ListNode {
  constructor(val, next = null) {
    this.val = val;
    this.next = next;
  }
}

// 定义链表头节点
let head = new ListNode(1);
head.next = new ListNode(2);
head.next.next = new ListNode(3);
head.next.next.next = head.next;

// 判断链表中是否存在环
let slow = head;
let fast = head;

while (slow && fast && fast.next) {
  slow = slow.next;
  fast = fast.next.next;

  if (slow === fast) {
    console.log("存在环");
    break;
  }
}

if (slow !== fast) {
  console.log("不存在环");
}

以上是JavaScript中链表的定义与应用方法示例攻略,通过此攻略可以了解链表操作的基本方法,并且可以应用于实际开发中。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript 链表定义与使用方法示例 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • webpack实现热更新(实施同步刷新)

    webpack实现热更新是在开发过程中非常常见的需求,它可以在代码修改后自动刷新页面,使开发人员能够更方便地查看效果。下面是实现webpack热更新的完整攻略: 1. 配置webpack-dev-server webpack-dev-server是webpack中的一个开发服务器,它可以实现热更新,而我们只需要在启动webpack-dev-server时添加…

    JavaScript 2023年6月1日
    00
  • 关于JavaScript中string 的replace

    下面是关于JavaScript中string的replace的详细攻略。 什么是replace replace() 方法是 JavaScript 中的字符串方法,它用于在字符串中查找一个指定的子串,并用另一个字符串替换它。这个替换过程是不影响原字符串,而是产生一个新的字符串。 replace() 方法接收两个参数:第一个是需要查找的子串或正则表达式,第二个是…

    JavaScript 2023年5月28日
    00
  • jQuery+Ajax+js实现请求json格式数据并渲染到html页面操作示例

    下面是实现请求JSON格式数据并渲染到HTML页面的完整攻略: 1. 准备工作 首先,我们需要在HTML页面中引入 jQuery 库,可以通过CDN链接或者下载到本地并引入。 然后,我们需要创建一个用来渲染数据的HTML元素,比如一个列表,例如: <ul id="list"></ul> 2. 请求JSON数据 接下…

    JavaScript 2023年5月27日
    00
  • js中top的作用深入剖析

    JS中top的作用深入剖析 什么是top top 是一个全局对象,它表示当前窗口的顶层进行上下文,通常指浏览器的最顶层窗口即顶层窗口对象。 在浏览器环境中,可以通过访问 top 对象来操作浏览器窗口,比如通过 top.location 属性获取当前窗口的 URL、通过 top.open() 方法打开新的浏览器窗口等。 top 对象通常被用来处理跨域问题,可以…

    JavaScript 2023年6月11日
    00
  • 浅析javascript的return语句

    浅析JavaScript的return语句,我们可以从以下几个方面进行阐述: 1. return的作用 在函数内,return关键字的作用是“终止函数执行并返回一个值”。也就是说,当函数执行到return语句时,会立即退出函数并返回一个值,如果没有指定返回值,则返回undefined。 2. return的使用方式 在JavaScript中,return的使…

    JavaScript 2023年6月10日
    00
  • 浅谈regExp的test方法取得的值变化的原因及处理方法

    下面是“浅谈regExp的test方法取得的值变化的原因及处理方法”的完整攻略: 什么是regExp的test方法 RegExp是JavaScript中的正则表达式对象,test()是它的一个方法,用于测试一个字符串是否符合某个正则表达式的匹配规则。test()方法返回一个布尔值,如果符合规则则返回true,否则返回false。 let str = ‘abc…

    JavaScript 2023年6月10日
    00
  • javascript 10进制和62进制的相互转换

    让我们来详细讲解一下JavaScript中10进制和62进制的相互转换的攻略。 10进制转62进制 将10进制转换为62进制的过程可以分为三步: 将10进制数字不断除以62,记录余数,直到结果为0; 将余数与62个基本字符进行映射,得到对应的字符; 将所有字符倒序排列得到62进制字符串。 下面是代码示例: /** * 将10进制数字转换为62进制字符串 * …

    JavaScript 2023年5月19日
    00
  • JavaScript String 对象常用方法详解

    下面我来详细讲解一下 JavaScript String 对象常用方法。 一、JavaScript String 对象简介 JavaScript 中的 String 对象,用于处理文本(字符串)数据。它包含了许多实用的方法,可以完成字符串的拼接、截取、检索、替换等操作。 二、JavaScript String 对象常用方法详解 下面是 JavaScript …

    JavaScript 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部