本文实例讲述了JS实现的合并两个有序链表算法。分享给大家供大家参考,具体如下:
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入:1→2→4 1→3→4
引用>
输出:1→1→2→3→4→4
可以直接运行的方案:
& lt; script> 函数节点(元素){ 这一点。元素=元素;//当前节点的元素 这一点。下一个=零;//下一个节点链接 } 函数列表(){ 这一点。头=新节点(“头”);//头节点 这一点。发现=;//查找节点 这一点。插入=插入;//插入节点 这一点。删除=删除;//删除节点 这一点。显示=显示;//显示链表 这一点。findPrevious=findPrevious;//查找前一个节点 }//下面的函数是操作方法:对应列表类构造函数中的名称//查找给定节点 函数找到(项){ var currNode=this.head; 而(currNode。元素!=项目){ currNode=currNode.next; } 返回currNode; }//向链表插入一个节点 函数插入(newElement、项目){ var newNode=新节点(newElement); 当前var=this.find(项); 如果(当前==null) 恢复控制台。日志(“找不到项目”); newNode。下一个=current.next; 电流。下一个=newNode; }//删除节点 函数删除(项){ var prevNode=this.findPrevious(项); 如果(prevNode。下一个!=null) prevNode。下一个=prevNode.next.next; }//从链表中删除节点时,我们先要找个待删除节点的前一个节点,找到后,我们修改它的下一个属性,使其不在指向待删除的节点,而是待删除节点的下一个节点。那么,我们就得需要定义一个findPrevious方法遍历链表,检查每一个节点的下一个节点是否存储待删除的数据。如果找到,返回该节点,这样就可以修改它的下一个属性了。//查找带删除节点的前一个节点 函数findPrevious(项){ var currNode=this.head; 而(currNode。下一个!=零,,currNode.next。元素!=项目){ currNode=currNode.next; } 返回currNode; }//显示链表元素 函数显示(){ var电流=this.head; (当前。下一个!=null) { console.log (current.next.element); 当前=current.next; } }/* * * @param{节点}l1 * @param l2{节点} * @return{节点} */var mergeTwoLists=函数(l1, l2) {//模仿链表的数据结构 var mergedHead={元素:1、下:零}, 坏蛋=mergedHead; 而(l1,,l2) { 如果(l1。元素& lt;=l2.element) { cur.next=l1; l1=l1.next; } 其他{ cur.next=l2; l2=l2.next; } 坏蛋=cur.next; } l1 cur.next=| | l2 返回mergedHead.next; }; 让list1=新列表(); list1.insert(1,“头”); list1.insert (2, 1); list1.insert (4,2); console.log (list1.display ()); 我们用于=新列表(); list2.insert(1,“头”); list2.insert (3,1); list2.insert (4,3); console.log (list2.display ()); console.log (mergeTwoLists (list1.head, list2.head)) & lt;/script> >之前感兴趣的朋友可以使用:http://tools.jb51.net/code/HtmlJsRun测试上述代码,查看运行效果。
更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《JavaScript数学运算用法总结》,《JavaScript数据结构与算法技巧总结》,《JavaScript数组操作技巧总结》,《JavaScript排序算法总结》,《JavaScript遍历算法与技巧总结》,《JavaScript查找算法技巧总结》及《JavaScript错误与调试技巧总结》
希望本文所述对大家JavaScript程序设计有所帮助。
JS实现的合并两个有序链表算法示例