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

Day71-100数据结构链表(十一)——双链表的实现

时间:2023-03-26 20:24:38 JavaScript

(一)题目设计链表的实现。您可以选择使用单向链表或双向链表。单向链表中的节点应该有两个属性:val和next。val是当前节点的值,next是指向下一个节点的指针/引用。如果你使用的是双向链表,你还需要一个属性prev来表示链表中的前一个节点。假设链表中的所有节点都是0-index。(2)实现单链表的思路在单链表的运行中,增加prev字段,处理头节点、尾节点等特殊判断(3)代码实现varMyLinkedList=function(){this.head=nullthis.length=0};/**获取链表中索引节点的值。如果索引无效,则返回-1。*@param{number}index*@return{number}*/MyLinkedList.prototype.get=function(index){if(index<0||index>=this.length){return-1}letcur=this.头;让总和=0;if(index==0){returncur.val}else{while(sumthis.length){return}letnode={prev:null,val,next:null};让cur=this.head,pre,sum=0;if(index===0){returnthis.addAtHead(val);//index为0,在头部插入}elseif(index===this.length){returnthis.addAtTail(val);//index=length,appendattheend}else{while(sum<=index-1){//找到索引位置的前一个节点pre=cur;cur=cur.next;//下一个节点总和++;}pre.next=节点;node.prev=pre;node.next=当前;cur.prev=node}this.length++};/**如果index索引有效,删除链表中第index个节点。*@param{number}index*@return{void}*/MyLinkedList.prototype.deleteAtIndex=function(index){if(index<0||index>=this.length)return;让cur=this.head,pre,countIndex=0;if(index===0){this.head=cur.nextcur.prev=null}else{while(countIndex++