如何合并两个有序链表-创新互联

如何合并两个有序链表?相信很多人都还没学会这个技能,通过这篇文章的总结,希望你能学会合并两个有序链表。如下资料是关于合并两个有序链表的两种方法。

泰山网站制作公司哪家好,找创新互联!从网页设计、网站建设、微信开发、APP开发、响应式网站设计等网站项目制作,到程序开发,运营维护。创新互联公司2013年成立到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联。

直接合并

因为已经有序了,类似归并排序中的合并一样,操作不难,直接上代码了.

ListNode t = new ListNode(0);
ListNode head = t;
while(l1 != null && l2 != null)   
{
   if(l1.val < l2.val)
   {
     t.next = l1;
     l1 = l1.next;
   }
   else
   {
     t.next = l2;
     l2 = l2.next;
   }
   t = t.next;
}
while(l1 != null)
{
   t.next = l1;
   l1 = l1.next;
   t = t.next;
}
while(l2 != null)
{
   t.next = l2;
   l2 = l2.next;
   t = t.next;
}
return head.next;

如何合并两个有序链表

递归合并

这个可以采用递归优化,而且不用额外设置一个移动的临时结点t.首先对两个指针进行判空操作,其中一个为空的话返回另一个,然后进行递归合并,首先创建一个head结点,进行赋值后递归合并next结点,将返回值赋给head.next,最后返回head.

if(l1 == null) return l2;
if(l2 == null) return l1;

ListNode head = null;
if(l1.val < l2.val)
{
   head = l1;
   head.next = mergeTwoLists(l1.next, l2);
}
else
{
   head = l2;
   head.next = mergeTwoLists(l1, l2.next);
}
return head;

看完上述内容,你们掌握合并两个有序链表的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注创新互联行业资讯频道,感谢各位的阅读!

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享名称:如何合并两个有序链表-创新互联
网页网址:http://myzitong.com/article/desjge.html