public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
// 虚拟头节点
ListNode dum = new ListNode();
ListNode cur = dum;
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;
}
// 将两个链表存在剩余的链表,挂到新链表下一个位置
cur.next = list1 != null ? list1 : list2;
// 返回新链表的下一个元素
return dum.next;
}