JS实现的合并两个有序链表算法示例

  

本文实例讲述了JS实现的合并两个有序链表算法。分享给大家供大家参考,具体如下:

  

将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。

  

示例:   

  

输入:1→2→4 1→3→4
  输出:1→1→2→3→4→4

     

 JS实现的合并两个有序链表算法示例

  

可以直接运行的方案:

        & 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实现的合并两个有序链表算法示例