//实现一个函数,输入两个链表(递增),合并为一个链表,依然保持有序。
package com.offer.test.listnodecomb;
class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
/**
* Created by szh on 2020/5/27.
* @author szh
*/
public class ListNodeCodeComb {
//实现一个函数,输入两个链表(递增),合并为一个链表,依然保持有序。
static ListNode combNode(ListNode linked1, ListNode linked2) {
ListNode first = new ListNode(0);
ListNode node = first;
ListNode cur1 = linked1;
ListNode cur2 = linked2;
while (true) {
if (cur1 == null) {
while (cur2 != null) {
node.next = cur2;
node = cur2;
cur2 = cur2.next;
}
break;
}
else if (cur2 == null) {
while (cur1 != null) {
node.next = cur1;
node = cur1;
cur1 = cur1.next;
}
break;
}
if (cur1.val <= cur2.val) {
node.next = cur1;
node = cur1;
cur1 = cur1.next;
} else {
node.next = cur2;
node = cur2;
cur2 = cur2.next;
}
}
return first.next;
}
public static void main(String[] args) {
ListNode arr1_1 = new ListNode(1);
ListNode arr1_2 = new ListNode(3);
ListNode arr1_3 = new ListNode(5);
arr1_1.next = arr1_2;
arr1_2.next = arr1_3;
ListNode arr2_1 = new ListNode(2);
ListNode arr2_2 = new ListNode(4);
ListNode arr2_3 = new ListNode(6);
arr2_1.next = arr2_2;
arr2_2.next = arr2_3;
ListNode point = arr1_1;
while(point != null){
System.out.println(point.val);
point = point.next;
}
System.out.println("------------------");
point = arr2_1;
while(point != null){
System.out.println(point.val);
point = point.next;
}
System.out.println("------------------");
ListNode result = combNode(arr1_1, arr2_1);
point = result;
while(point != null){
System.out.println(point.val);
point = point.next;
}
System.out.println("------------------");
ListNode arr3_1 = new ListNode(1);
ListNode arr4_1 = null;
ListNode result2 = combNode(arr3_1, arr4_1);
point = result2;
while(point != null){
System.out.println(point.val);
point = point.next;
}
System.out.println("------------------");
}
}
输出
1
3
5
------------------
2
4
6
------------------
1
2
3
4
5
6
------------------
1
------------------