合并两个排序链表
题目描述
解题思路一:递归方式,节点之间两两比较直到某个链表为空。
/**
* 使用递归的方式 使节点之间相互比较
* @param list1
* @param list2
* @return
*/
public ListNode Merge1(ListNode list1,ListNode list2) {
if (list1==null) return list2;
if (list2==null) return list1;
if (list1.val<=list2.val){
list1.next = Merge1(list1.next,list2);
return list1;
}else {
list2.next = Merge1(list1,list2.next);
return list2;
}
}
解题思路二:使用迭代的方式实现相当于用一个链表指针,一直指向当前的元素,并比较寻找下一个元素直到某个链表节点的next域为空。
/**
* 使用迭代的方式实现
* 相当于用一个链表指针,一直指向当前的元素,并比较寻找下一个元素
* 直到某个链表节点的next域为空。
* @param list1 链表1
* @param list2 链表2
* @return 组合链表头结点
*/
public ListNode Merge2(ListNode list1,ListNode list2){
ListNode head = new ListNode(-1);
ListNode cur = head;
while (list1!=null&&list2!=null){
if (list1.val<=list2.val){
cur.next = list1;
list1 = list1.next;
}else {
cur.next = list2;
list2 = list2.next;
}
cur = cur.next;
}
if (list1!=null) cur.next = list1;
if (list2!=null) cur.next = list2;
return head.next;
}