当前位置: 首页 > Web前端 > HTML5

JavaScript中功能齐全的单向链表

时间:2023-04-05 23:58:00 HTML5

前言前端也要做好数据结构!!单链表是用JavaScript实现的。单链表数据结构对象可以通过LinkedList构造函数实例化。所有方法都放在LinkedList构造函数的原型对象上,能想到的方法都写了。GitHub源码地址可以下载运行实现,通过LinkedList类创建链表实例。链表下有添加、查找、删除、显示节点等方法。链表最初默认有一个“_head”头节点,使用时是隐藏的。通过元素/索引进行增删改查,找不到则返回错误,查找不到则返回null或-1item元素obj.findIndex(index)通过index索引找到元素obj.findIndexOf(item)通过item元素内容找到元素indexobj.findPrev(item)通过item元素找到上一个节点元素Addobj.insert(item,newElement)在链表的item元素后面插入一个新元素obj.push(item)在末尾插入item元素obj.insertIndex(index,newElement)在索引index处插入一个新元素deleteobj.remove(item)删除item元素obj.removeIndex(index)删除索引index处的节点otherobj.size()返回链表lengthobj.display()以数组的形式返回链表,方便供观察。测试obj.reversal()链表顺序反转(递归)方法代码链表类LinkedListfunctionLinkedList(...rest){this._head=newNode('_head')//链表头节点//如果有new时传入的值,将其添加到实例中if(rest.length){this.insert(rest[0],'_head')for(leti=1;i递归函数反转(){functionreversalList(item){if(item.next){让tmpItem=reversalList(item.next)item.next=nulltmpItem.next=itemreturnitem}else{obj._head.next=itemreturnitem}}reversalList(obj._head.next)}obj.display()functiondisplay(){//链表显示和使用,默认head不存在letcurrNode=this._head.nextlettmpArr=[]while(currNode!==null){tmpArr.push(currNode)currNode=currNode.next}returntmpArr}Exampletest//运行测试letobj=newLinkedList('Node0','Node1','Node2','Node3','Node4','Node5')console.log('---instanceobject')console.log(obj)console.log('---insertelementattheend')obj.push('pushinsert')控制台。log(obj.display())console.log('---insertelementafterelement')obj.insert('elementinserted','node2')console.log(obj.display())console.log('--在索引处插入元素')obj.insertIndex('在索引处插入',5)console.log(obj.display())console.log('---查找元素位置')console.log(obj.find('节点4'))console.log('---移除元素')obj.remove('节点5')console.log(obj.display())console.log('---移除索引元素')obj.removeIndex(5)console.log(obj.display())console.log('---元素长度')console.log(obj.size())console.log('---indexlookup')console.log(obj.findIndex(2))console.log('---元素搜索索引')console.log(obj.findIndexOf('node3'))console.log('---reverse链表')obj.reversal()console.log(obj.display())最后测试结果,最近遇到单链表反转的问题。都加入了对单链表进行反转的方法,利用相关链接的递归实现来实现对单链表的反转。JavaScript实现全功能单向链表的几种方法