Merge Two Sorted Lists

本文介绍了一种将两个有序链表合并为一个有序链表的方法。通过比较两个链表节点的值,选择较小的节点加入新的链表中,直至一个链表遍历完毕,再将另一个链表剩余部分连接到新链表。

Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.
题意:把两个有序的链表合并成一个有序链表

思路:归并排序的归并部分,两个指针指向链表的头节点,比较元素大小,把小的先加入结果链表,并且该指针后移。如果其中一个链表到达尾部,则将另一个链表的剩余部分复制到结果链表

实现:
/**
 * Definition for singly - linked list.
 * public class ListNode {
 *     int val ;
 *     ListNode next;
 *     ListNode( int x) {
 *         val = x;
 *         next = null;
 *     }
 * }
 */
public class Solution {
      public ListNode mergeTwoLists(ListNode l1, ListNode l2 ) {
           ListNode first= new ListNode(0);//结果链表
           ListNode l= first;
           while (l1 != null|| l2!= null){
              
               ListNode t= new ListNode(0);
               if (l1 == null){ //如果l1链表到结尾,则把另一个链表以此复制到结果链表
                    t.val= l2.val;
                    l2= l2.next;
              }
               else if (l2 == null){ //如果l2链表到结尾,则把另一个链表以此复制到结果链表
                    t.val= l1.val;
                    l1= l1.next;
              }
               else if (l1 .val<l2 .val){//把两个指针对应的值小的元素的节点加入结果链表
                    t.val= l1.val;
                    l1= l1.next;
              }
               else { //把两个指针对应的值小的元素的节点加入结果链表
                    t.val= l2.val;
                    l2= l2.next;
              }
               l.next= t;
               l= t;
          }
           return first .next;
     }
}


转载于:https://my.oschina.net/u/3099393/blog/798363

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值