JavaScript链表的基本操作完整版

一:定义单向链表节点类
//定义单向链表的节点类
class Node{constructor(data){this.data = data  //节点的数据域(数据成员)this.next = null  //节点的指针域(指针成员)}
}
二:定义单向链表类
//定义单向链表类class SingleLinked{constructor(){this.size = 0 //用记录链表中的节点个数this.head = new Node('head')  //是链表的头指针:记录链表的起始地址this.currentNode = '' //用来记录当前节点}
三:获取链表的长度
//获取链表的长度getLength(){return this.size}
四:判断链表是否为空
  //判断链表是否为空isEmpty(){return this.size === 0}
五:遍历链表
//遍历链表:不重复访问链表中的每个节点
displayList(){var list = ''var currentNode = this.head //指向链表的头指针while(currentNode){  //若当前节点不为空list += currentNode.datacurrentNode = currentNode.next //让指针指向当前节点的下一个节点if(currentNode){list += '->'}}console.log(list)
}
六:获取链表的最后一个节点
//获取链表的最后一个节点
findLast(){var currNode = this.headwhile(currNode.next){currNode = currNode.next}return currNode;
}
七:采用尾插法给链表插入元素
  //采用尾插法给链表插入元素appendNode(element){var currNode = this.findLast() //找到链表的最后一个节点var newNode = new Node(element) //创建一个新的节点currNode.next = newNodenewNode.next = nullthis.size++ //链表的长度加1}
}
八:查找节点
findNode (element) {var currNode=this.headwhile(currNode&&(currNode.data!==element)){currNode=currNode.next}return currNode
}
九:删除节点
removeNode(element){if(!this.findNode(element){console.log('要删除的节点不存在!')return}if('head'===element){console.log('整个链表将被删除')this.head=nullthis.size=0return}var currNode=this.headwhile(currNode.next.data!==element){currNode=currNode.next}currNode.next=currNode.next.nextthis.size--)
}
十:哑节点的使用

​ 哑节点(dummy node)是初始值为NULL的节点,创建在使用到链表的函数中,可以起到避免处理头节点为空的边界问题的作用,减少代码执行异常的可能性。也就是说,哑节点的使用可以对代码起到简化作用省略当函数的入口参数为空时的判断)。

​ 在这里要强调一下,每一个Node被创建时,它的next指针总是NULL

解题套路如下:

​ 1 给链表添加虚拟头节点 dummy,这样就不需要再单独考虑头节点了,可以省去很多麻烦;

​ 2 找到需要操作的链表区间,区间起始节点用 start 表示,结束节点用 end 表示;

​ 3 对区间上的链表进行操作;

​ 4 将操作后的链表重新接回原链表,这里我们需要另外两个变量,前驱节点 prev 和后继节点 successor。

JavaScript链表的基本操作完整版相关推荐

  1. 韩顺平轻松搞定网页设计(html+css+js),韩顺平轻松搞定网页设计方案(html+css+js)之javascript现场授课笔记(完整版).doc...

    2011韩顺平轻松搞定网页设计(html+css+js)之 javascript现场授课笔记(完整版) 视频18整和19的前半部分不用看 Javascript的基本介绍 JS是用于WEB开发的脚本语言 ...

  2. 尚硅谷最新版JavaScript基础全套教程完整版(p79-p90)

    尚硅谷最新版JavaScript基础全套教程完整版(140集实战教学,JS从入门到精通) 一.函数的方法 1.call()和 apply()方法 -这两个方法都是函数对象方法,需要通过函数对象来调用 ...

  3. 用c语言实现数据结构算法将两个有序链表并为一个有序链表的算法,,(完整版)数据结构-习题集答案-(C语言版严蔚敏)...

    } 2.15 已知指针ha和hb分别指向两个单链表的头结点,并且已知两个链表的长度分别为m和n.试写一算法将这两个链表连接在一起,假设指针hc指向连接后的链表的头结点,并要求算法以尽可能短的时间完成连 ...

  4. 深入浅出JavaScript-老杜JavaScript基础教程全套完整版+老杨JS应用篇

    p1/53 javascript概述 p2/53 HTML中嵌入javascript的第一种方式 <!DOCTYPE html> <html><head><m ...

  5. Mr.J--原生Javascript实现俄罗斯方块(完整版(附源代码下载链接))

    昨天写了一下部分 game.js 和方块模型的实现,还有开始,结束,消行,计时,计分等功能. Mr.J--俄罗斯方块实现(框架) 开始 小视窗刷新方块 随机方块及旋转 是否继续下落 到达底部函数 检测 ...

  6. JavaScript(基础、高级)笔记汇总表【尚硅谷JavaScript全套教程完整版】

    目   录 前言 JavaScript(基础+高级)配套资料下载 JavaScript 基础 学习地址 学习笔记 day 05(P001-P006)[2016.11.22] day 06(P007-P ...

  7. JavaScript + Audio API自制简易音乐播放器(详细完整版、小白都能看懂)

    JavaScript + Audio API自制简易音乐播放器(详细完整版) ** 音乐播放器的功能清单如下: ** 1.点击暂停按钮,歌曲暂停 2.点击播放按钮,歌曲播放 3.单曲循环与取消单曲循环 ...

  8. JavaScript完整版国家-省-市地区,级联效果(带效果图哦)

    JavaScript完整版国家-省-市地区,级联效果(带效果图哦) 最近要做一个国家,省市级联的效果,网上搜了下,都是国家内的,没办法,看了几个,大家都知道简单,自己动手吧,在网上的一个基础上,找了一 ...

  9. 数据结构几个最简单的阐述完整版(带你入门:链表,栈,队列,哈希表,树)通俗易懂简单明了

    数据结构几个最简单的阐述完整版 一.链表(Linked list): 如下图是一个链表: 1.链表是无须存储在连续的空间内,一般都是分散存储于内存中.(指针是指向下一个数据的内存地址) 2.所有要访问 ...

最新文章

  1. 8种方法用Python实现线性回归,为你解析最高效选择
  2. C++——入门知识点汇总(命名空间、缺省、重载、引用等)
  3. php 修改文件的权限_php怎么修改文件的权限?
  4. 可输入过滤和直接选择的select控件
  5. java 抽样_beta分布的采样或抽样(java程序)
  6. linux内核实验教程答案,20199310《Linux内核原理与分析》第十五周作业 Linux安全实验...
  7. Unity使用自定义资源(.asset)配置数据
  8. Linux下有趣的命令
  9. 第33期、基于java的网上订餐管理系统
  10. 高性能抗干扰宽带自组网电台——T3M2-20W视距100km测试
  11. 视频处理VideoCapture类---OpenCV-Python开发指南(38)
  12. 什么是Tableau(BI工具)
  13. Oracle数据库表空间整理回收与释放操作
  14. java判断时间段是否交叉重叠
  15. 什么是adsl动态拨号服务器?
  16. CPU被挖矿,Redis竟是内鬼,
  17. NMOS与PMOS的导通条件与使用方法
  18. 简单Python画折线图
  19. Amesim学习——RC电路仿真
  20. 国家标准 | GB∕T 30276-2020 信息安全技术 网络安全漏洞管理规范

热门文章

  1. java基础试题_java基础测试题_含答案.doc
  2. tomcat6类加载器与类加载顺序
  3. php 队列和堆栈,堆栈区别
  4. Pythonxy批量修改变量名
  5. Uncaught SyntaxError: The requested module ‘/node_modules/.vite/deps/vue.js?v=3e1adf4e‘ does not ...
  6. 解决问题: Error: command failed: npm install --loglevel error --legacy-peer-deps
  7. 传统厂家如何开展社交电商+新零售+私域流量,附案例分析及搭建方法!
  8. React 引入vconsole
  9. xshell查看文件大小和删除文件
  10. 保宁资本周建华科技资讯:AI的场景变化