javascript中有链表吗
JavaScript中没有链表;链表是指多个元素组成的列表,元素存储不连续而是用next指针连接在一起,因此链表增删非首尾元素时不需要移动元素,只需要更改next的指向即可,在JavaScript中可以利用Object来模拟链表。
本教程操作环境:windows10系统、javascript1.8.5版、Dell G3电脑。
javascript中有链表吗
javascript中没有链表
什么是链表?
链表是多个元素组成的列表
元素存储不连续,用next指针连接到一起
JS中没有链表,但是可以用Object模拟链表
常用操作
新增节点 append
删除节点 remove
插入节点 insert
获取索引 indexOf
链表转字符串 toString
获取链表长度 size
判断链表是否为空 isEmpty
数组 VS 链表
数组: 增删非首尾元素时往往需要移动元素
链表:增删非首尾元素,不许要移动元素,只需要更改next的指向即可。
示例如下:
JavaScript没有直接的链表实现,以下是自己对链表的简单实现
function LinkedList(){ var Node = function(element){ this.element = element; this.next = null; } var head = null; var length = 0; // 定义append方法 this.append = function(element){ var node = new Node(element), current; // 当head为空时,就将新增的node作为head if(head === null){ head = node }else{ // 当head不为空时,将head赋值为当前值,通过判断当前值的next值是否存在遍历整个链表 current = head; while(current.next){ current = current.next; } // 遍历到链表的最后一项时,设置最后一项的next为新增的内容 current.next = node } // 每新增一项,length都加1操作 length++; } // 定义toString方法 this.toString = function(){ var string = '', current = head; // 最初将当前值定位到头部,当current存在时,将current的值添加到需要返回的string中,之后将current取为链表下一个值 while(current){ string += current.element + ( current.next ? ',' : ''); current = current.next } // 遍历完整个链表之后返回string return string; } this.removeAt = function(position){ // 当指定的位置没有在链表的长度范围内时直接返回null if(position > -1 && position < length){ var current = head, index = 0, previous; // 指定为值是第一个时就将head移到下一个位置 if(position === 0){ head = current.next }else{ // 通过遍历的方式将current移动到指定位置,使用index记录移动的距离 while(index < position){ previous = current; current = current.next; index++; } // 删除是通过将指定位置的上一个节点的next指向指定位置的下一个节点 previous.next = current.next } // 一旦删除成功需要将长度减一并返回删除的值 length--; return current.element; } return null; } // 实现插入功能 this.insert = function(position,element){ // 插入的位置不在链表范围内时返回false if(position > -1 && position <= length){ var current = head, index = 0, node = new Node(element), previous; // 插入内容在头部时将插入的node的next指定为current,current此时为head,然后将head指定为插入的node if(position === 0){ node.next = current; head = node; }else{ // 通过遍历的方式将指针指定到插入的位置,index记录当前移动的位置 while(index < position){ previous = current; current = current.next index++ } // 插入元素通过将插入位置的上一个元素的next指向插入的节点,并将插入的节点的next指向当前节点 previous.next = node; node.next = current; } // 插入成功之后length加1 length++; return true; } return false } // 实现查找指定element的index的功能 this.indexOf = function(element){ var index = 0, current = head; // 通过遍历的方式寻找指定元素所在的位置. // 当前节点存在时,判断当前节点的element是否为需要寻找的element,如果是就返回此时的index,如果不是就继续向下遍历节点 // 当存在两个相同内容时只会返回第一个index while(current){ if(current.element === element){ return index; } current = current.next; index++; } return -1; } }
实现之后进行如下调用:
var linkedList = new LinkedList(); linkedList.append(15); linkedList.append(10); linkedList.insert(1,2) // true linkedList.insert(2,2) // true linkedList.toString() // "15,2,2,10" linkedList.removeAt(3) // 10 linkedList.toString() // "15,2,2" linkedList.indexOf(2) // 1
【相关推荐:javascript视频教程、web前端】
以上是javascript中有链表吗的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

如何使用WebSocket和JavaScript实现在线语音识别系统引言:随着科技的不断发展,语音识别技术已经成为了人工智能领域的重要组成部分。而基于WebSocket和JavaScript实现的在线语音识别系统,具备了低延迟、实时性和跨平台的特点,成为了一种被广泛应用的解决方案。本文将介绍如何使用WebSocket和JavaScript来实现在线语音识别系

WebSocket与JavaScript:实现实时监控系统的关键技术引言:随着互联网技术的快速发展,实时监控系统在各个领域中得到了广泛的应用。而实现实时监控的关键技术之一就是WebSocket与JavaScript的结合使用。本文将介绍WebSocket与JavaScript在实时监控系统中的应用,并给出代码示例,详细解释其实现原理。一、WebSocket技

如何利用JavaScript和WebSocket实现实时在线点餐系统介绍:随着互联网的普及和技术的进步,越来越多的餐厅开始提供在线点餐服务。为了实现实时在线点餐系统,我们可以利用JavaScript和WebSocket技术。WebSocket是一种基于TCP协议的全双工通信协议,可以实现客户端与服务器的实时双向通信。在实时在线点餐系统中,当用户选择菜品并下单

如何使用WebSocket和JavaScript实现在线预约系统在当今数字化的时代,越来越多的业务和服务都需要提供在线预约功能。而实现一个高效、实时的在线预约系统是至关重要的。本文将介绍如何使用WebSocket和JavaScript来实现一个在线预约系统,并提供具体的代码示例。一、什么是WebSocketWebSocket是一种在单个TCP连接上进行全双工

JavaScript和WebSocket:打造高效的实时天气预报系统引言:如今,天气预报的准确性对于日常生活以及决策制定具有重要意义。随着技术的发展,我们可以通过实时获取天气数据来提供更准确可靠的天气预报。在本文中,我们将学习如何使用JavaScript和WebSocket技术,来构建一个高效的实时天气预报系统。本文将通过具体的代码示例来展示实现的过程。We

JavaScript教程:如何获取HTTP状态码,需要具体代码示例前言:在Web开发中,经常会涉及到与服务器进行数据交互的场景。在与服务器进行通信时,我们经常需要获取返回的HTTP状态码来判断操作是否成功,根据不同的状态码来进行相应的处理。本篇文章将教你如何使用JavaScript获取HTTP状态码,并提供一些实用的代码示例。使用XMLHttpRequest

用法:在JavaScript中,insertBefore()方法用于在DOM树中插入一个新的节点。这个方法需要两个参数:要插入的新节点和参考节点(即新节点将要被插入的位置的节点)。

JavaScript中的HTTP状态码获取方法简介:在进行前端开发中,我们常常需要处理与后端接口的交互,而HTTP状态码就是其中非常重要的一部分。了解和获取HTTP状态码有助于我们更好地处理接口返回的数据。本文将介绍使用JavaScript获取HTTP状态码的方法,并提供具体代码示例。一、什么是HTTP状态码HTTP状态码是指当浏览器向服务器发起请求时,服务
