您的位置:首页 > 职场人生

剑指offer面试题25:合并两个排序的链表(Java 实现)

2019-01-16 11:46 399 查看

题目:输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按照递增排序的。

思路:分别遍历两个链表,每一个都比较两个链表的头结点,把小的那一个头结点放到一个新定义的链表中,因为每一个比较合并的过程都是一模一样的,所以可以使用递归来实现。这里要注意输入的链表为空的特殊情况。

测试用例:

  1. 功能测试:输入的两个链表有多个节点;节点的值互不相同或者存在值相等的多个节点。
  2. 特殊测试:两个链表中只有一个节点。
  3. 负面测试:两个链表的其中一个头结点为空或者两个头结点都为空。
public class test_twenty_five {
public ListNode Merge(ListNode list1, ListNode list2){
//如果链表一为空就返回链表二,如果链表二为空就返回链表一,如果都为空就随便返回一个,反正都是空
if(list1 == null)return list2;
if(list2 == null)return list1;

ListNode list0 = null;        //定义list0来保存节点

//每一次都比较两个链表的头结点,把小的那个放到list0中,然后递归进行下一次的比较
if(list1.val < list2.val){
list0 = list1;
list0.next = Merge(list1.next,list2);
}
else{
list0 = list2;
list0.next = Merge(list1,list2.next);
}
return list0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: