/**
* @author liizzz
* @date 2019-10-24
*/
public class S17 {
public static void main(String[] args) {
S17 s17 = new S17();
ListNode list1 = s17.init1();
ListNode list2 = s17.init2();
ListNode retList = s17.merge(list1, list2);
ListNode temp = retList;
System.out.println("合并后的链表为: ");
while (temp != null) {
System.out.print(temp.val + " --> ");
temp = temp.next;
}
System.out.println();
}
public ListNode init1() {
ListNode head = new ListNode(0);
ListNode node = head;
for (int i = 2; i < 10; i = i + 2) {
node.next = new ListNode(i);
node = node.next;
}
System.out.println("list1 链表为:");
ListNode temp = head;
while (temp != null) {
System.out.print(temp.val + " --> ");
temp = temp.next;
}
System.out.println();
return head;
}
public ListNode init2() {
ListNode head = new ListNode(1);
ListNode node = head;
for (int i = 3; i <= 10; i = i + 2) {
node.next = new ListNode(i);
node = node.next;
}
System.out.println("list2 链表为:");
ListNode temp = head;
while (temp != null) {
System.out.print(temp.val + " --> ");
temp = temp.next;
}
System.out.println();
return head;
}
public ListNode merge(ListNode list1, ListNode list2) {
if (list1 == null) {
return list2;
}
if (list2 == null) {
return list1;
}
ListNode root;
if (list1.val < list2.val) {
root = new ListNode(list1.val);
list1 = list1.next;
} else {
root = new ListNode(list2.val);
list2 = list2.next;
}
ListNode node = root;
while (list1 != null && list2 != null) {
if (list1.val < list2.val) {
//list1 前进1
node.next = new ListNode(list1.val);
node = node.next;
list1 = list1.next;
} else {
node.next = new ListNode(list2.val);
node = node.next;
list2 = list2.next;
}
}
while (list1 != null) {
node.next = new ListNode(list1.val);
node = node.next;
list1 = list1.next;
}
while (list2 != null) {
node.next = new ListNode(list2.val);
node = node.next;
list2 = list2.next;
}
return root;
}
class ListNode {
int val;
ListNode next;
public ListNode(int val) {
this.val = val;
next = null;
}
public ListNode() {
}
}
}