当前位置: 首页 > 后端技术 > Node.js

数据结构-用JS实现链表-单链表

时间:2023-04-03 12:11:45 Node.js

链表链表是物理存储单元上的一种非连续、非顺序的存储结构。数据元素的逻辑顺序是通过链表中指针的链接顺序来实现的。链表由一系列节点组成(链表中的每个元素称为一个节点),节点可以在运行时动态生成。每个节点由两部分组成:一个是存储数据元素的数据域,另一个是存储下一个节点地址的指针域。【来源百度百科】链表特征是使用一组任意的内存空间来存储数据元素(这里的内存空间可以是连续的,也可以是不连续的)。每个节点(node)由数据本身和指向后续节点的指针组成。整个链表的访问必须从头指针开始。头指针指向第一个节点,最后一个节点指向NULL。JS中没有指针。上述节点指针只是从C语言中借用的概念。链表复杂度时间复杂度AccessSearchInsertionDeletionO(n)O(n)O(1)O(1)空间复杂度O(n)单向链表的实现链表中的几个主要操作初始化链表/节点头插入节点搜索/遍历节点删除节点...初始化链表中的节点classLinkedListNode{constructor(value,next=null){this.value=value;这个.下一个=下一个;//初始化为null}}初始化单向链表classLinkedList{constructor(){//初始空指针this.head=null;}}headappendnode(append)append(value){//新节点constnewNode=newLinkedListNode(value,this.head);//给head赋值,下次创建新节点this.head=newNode;}删除节点delete(value){//如果节点不存在returnnullif(!this.head){returnnull;}//如果节点被删除firstnodeletdeletedNode=null;//如果第一个元素被删除while(this.head&&this.head.value===value){deletedNode=this.head;this.head=this.head.next;}//不是第一个节点,遍历寻找letcurrentNode=this.head;if(currentNode!==null){while(currentNode.next){if(currentNode.next.value===value){deletedNode=currentNode.不分机;currentNode.next=currentNode.next.next;}else{currentNode=currentNode.next;}}}返回deletedNode;然后初始化就是一个head。顺序附加相同的结构。如果你理解了,就会觉得很简单。当然,链表远不止于此。还有双向链表。操作包括链表反转(reverse)、删除(head,tail)、数据结构的转换等。下次见。上述示例代码存储库的其他链接