JavaScript链表的基本操作完整版
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链表的基本操作完整版相关推荐
- 韩顺平轻松搞定网页设计(html+css+js),韩顺平轻松搞定网页设计方案(html+css+js)之javascript现场授课笔记(完整版).doc...
2011韩顺平轻松搞定网页设计(html+css+js)之 javascript现场授课笔记(完整版) 视频18整和19的前半部分不用看 Javascript的基本介绍 JS是用于WEB开发的脚本语言 ...
- 尚硅谷最新版JavaScript基础全套教程完整版(p79-p90)
尚硅谷最新版JavaScript基础全套教程完整版(140集实战教学,JS从入门到精通) 一.函数的方法 1.call()和 apply()方法 -这两个方法都是函数对象方法,需要通过函数对象来调用 ...
- 用c语言实现数据结构算法将两个有序链表并为一个有序链表的算法,,(完整版)数据结构-习题集答案-(C语言版严蔚敏)...
} 2.15 已知指针ha和hb分别指向两个单链表的头结点,并且已知两个链表的长度分别为m和n.试写一算法将这两个链表连接在一起,假设指针hc指向连接后的链表的头结点,并要求算法以尽可能短的时间完成连 ...
- 深入浅出JavaScript-老杜JavaScript基础教程全套完整版+老杨JS应用篇
p1/53 javascript概述 p2/53 HTML中嵌入javascript的第一种方式 <!DOCTYPE html> <html><head><m ...
- Mr.J--原生Javascript实现俄罗斯方块(完整版(附源代码下载链接))
昨天写了一下部分 game.js 和方块模型的实现,还有开始,结束,消行,计时,计分等功能. Mr.J--俄罗斯方块实现(框架) 开始 小视窗刷新方块 随机方块及旋转 是否继续下落 到达底部函数 检测 ...
- JavaScript(基础、高级)笔记汇总表【尚硅谷JavaScript全套教程完整版】
目 录 前言 JavaScript(基础+高级)配套资料下载 JavaScript 基础 学习地址 学习笔记 day 05(P001-P006)[2016.11.22] day 06(P007-P ...
- JavaScript + Audio API自制简易音乐播放器(详细完整版、小白都能看懂)
JavaScript + Audio API自制简易音乐播放器(详细完整版) ** 音乐播放器的功能清单如下: ** 1.点击暂停按钮,歌曲暂停 2.点击播放按钮,歌曲播放 3.单曲循环与取消单曲循环 ...
- JavaScript完整版国家-省-市地区,级联效果(带效果图哦)
JavaScript完整版国家-省-市地区,级联效果(带效果图哦) 最近要做一个国家,省市级联的效果,网上搜了下,都是国家内的,没办法,看了几个,大家都知道简单,自己动手吧,在网上的一个基础上,找了一 ...
- 数据结构几个最简单的阐述完整版(带你入门:链表,栈,队列,哈希表,树)通俗易懂简单明了
数据结构几个最简单的阐述完整版 一.链表(Linked list): 如下图是一个链表: 1.链表是无须存储在连续的空间内,一般都是分散存储于内存中.(指针是指向下一个数据的内存地址) 2.所有要访问 ...
最新文章
- 8种方法用Python实现线性回归,为你解析最高效选择
- C++——入门知识点汇总(命名空间、缺省、重载、引用等)
- php 修改文件的权限_php怎么修改文件的权限?
- 可输入过滤和直接选择的select控件
- java 抽样_beta分布的采样或抽样(java程序)
- linux内核实验教程答案,20199310《Linux内核原理与分析》第十五周作业 Linux安全实验...
- Unity使用自定义资源(.asset)配置数据
- Linux下有趣的命令
- 第33期、基于java的网上订餐管理系统
- 高性能抗干扰宽带自组网电台——T3M2-20W视距100km测试
- 视频处理VideoCapture类---OpenCV-Python开发指南(38)
- 什么是Tableau(BI工具)
- Oracle数据库表空间整理回收与释放操作
- java判断时间段是否交叉重叠
- 什么是adsl动态拨号服务器?
- CPU被挖矿,Redis竟是内鬼,
- NMOS与PMOS的导通条件与使用方法
- 简单Python画折线图
- Amesim学习——RC电路仿真
- 国家标准 | GB∕T 30276-2020 信息安全技术 网络安全漏洞管理规范
热门文章
- java基础试题_java基础测试题_含答案.doc
- tomcat6类加载器与类加载顺序
- php 队列和堆栈,堆栈区别
- Pythonxy批量修改变量名
- Uncaught SyntaxError: The requested module ‘/node_modules/.vite/deps/vue.js?v=3e1adf4e‘ does not ...
- 解决问题: Error: command failed: npm install --loglevel error --legacy-peer-deps
- 传统厂家如何开展社交电商+新零售+私域流量,附案例分析及搭建方法!
- React 引入vconsole
- xshell查看文件大小和删除文件
- 保宁资本周建华科技资讯:AI的场景变化