public class MergeTwoLists {
public static class ListNode {
int val;
ListNode next;
ListNode(int x) {
this.val = x;
}
public int getData() {
return this.val;
}
}
public static ListNode mergeTwoLists(ListNode l1, ListNode l2) {
if (l1 == null) {
return l2;
}
if (l2 == null) {
return l1;
}
if (l1.val < l2.val) {
l1.next = mergeTwoLists(l1.next, l2);
return l1;
} else {
l2.next = mergeTwoLists(l1, l2.next);
return l2;
}
}
public static ListNode mergeTwoListNode(ListNode l1, ListNode l2) {
ListNode p1 = l1;
ListNode p2 = l2;
ListNode p3 = new ListNode(0);
ListNode p = p3;
while (true) {
if (p1 == null && p2 == null) {
break;
} else if (p1 == null && p2 != null) {
p.next = p2;
break;
} else if (p1 != null && p2 == null) {
p.next = p1;
break;
} else if (p1.val <= p2.val) {
p.next = p1;
p1 = p1.next;
} else {
p.next = p2;
p2 = p2.next;
}
p = p.next;
}
return p3.next;
}
public static void print(ListNode listNode) {
ListNode curNode = listNode;
while (curNode.next != null) {
System.out.print(curNode.val + "->");
curNode = curNode.next;
}
System.out.print(curNode.val);
System.out.println();
// while (listNode.next != null){
// System.out.print(listNode.val + "->");
// listNode = listNode.next;
// }
// System.out.print(listNode.val);
// System.out.println();
}
public static void main(String[] args) {
ListNode listNode1 = new ListNode(1);
ListNode listNode2 = new ListNode(2);
ListNode listNode3 = new ListNode(5);
listNode1.next = listNode2;
listNode2.next = listNode3;
// print(listNode1);
ListNode listNode4 = new ListNode(1);
ListNode listNode5 = new ListNode(3);
ListNode listNode6 = new ListNode(4);
listNode4.next = listNode5;
listNode5.next = listNode6;
ListNode listNode = mergeTwoListNode(listNode1, listNode4);
print(listNode);
}
}
Java实现合并两个有序链表
最新推荐文章于 2024-05-01 11:16:26 发布