JS中的链表(含leetcode例题)

文章目录

链表

基本特性
  • 空间上不连续
  • 每存放一个值,都要多开销一个引用空间
优点
  • 不用担心空间碎片的问题
  • 添加和删除非常容易(改节点的引用地址)
缺点
  • 查询慢
  • 每个节点创建都要创建next引用,浪费内存

传递链表要传递的是根节点

链表的每一个节点,都认为自己是根节点

js 复制代码
// 链表创建
function Node(value) {
	this.value = value;
	this.next = null
}
const a = new Node(1)
const b = new Node(2)
const c = new Node(3)

a.next = b
b.next = c
c.next = null
链表循环遍历
js 复制代码
// 链表循环遍历
function traverse(root) {
  let temp = root
  while(true) {
    if(temp != null) {
      console.log(temp.value)
    } else {
      breack;
    }
    temp = temp.next
  }
}
traverse(a)
链表递归遍历
js 复制代码
function traverse(root) {
  if(root.next === null) return;
  console.log(root.value)
  traverse(root.next)
}
链表逆置

从后往前改变指向

js 复制代码
function reversal(root) {
  if (!root.next) return root // 终止条件为到最后一个节点
  const res = reversal(root.next) // 接收最内层(最后一个节点)return的 root
  root.next.next = root // 将下一个节点指向当前节点
  root.next = null // 当前节点指向null
  return res
}
相关推荐
Qhappy16 小时前
某加密企业版过frida检测
javascript
用户57573033462417 小时前
🔥 一文搞懂 JavaScript 包装类(面试必考)
javascript
滕青山17 小时前
Base64编码/解码 核心JS实现
前端·javascript·vue.js
sww_102617 小时前
SAA ReactAgent工作原理
开发语言·前端·javascript
linux_cfan17 小时前
拒绝“黑屏”与“哑剧”:Web视频播放器UX体验与自动播放选型指南 (2026版)
前端·javascript·音视频·html5·ux
be or not to be18 小时前
假期js学习汇总
前端·javascript·学习
SuperEugene18 小时前
日期与时间处理:不用库和用 dayjs 的两种思路
前端·javascript
追随者永远是胜利者18 小时前
(LeetCode-Hot100)200. 岛屿数量
java·算法·leetcode·职场和发展·go
Highcharts.js19 小时前
如何根据派生数据创建钟形曲线图表?highcharts正态分布曲线使用指南:从创建到设置一文搞定
开发语言·javascript·开发文档·正态分布·highcharts·图表类型·钟形图
追随者永远是胜利者19 小时前
(LeetCode-Hot100)301. 删除无效的括号
java·算法·leetcode·职场和发展·go