class Solution1 {
public:
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
ListNode* phead = new ListNode(-1); //构建带有头结点的链表
ListNode* pNode = phead;
while (l1 != nullptr && l2 != nullptr) { //循环条件:两指针都不为空
if (l1->val <= l2->val) { //如果l1指的元素小于等于l2所指元素,则新链表指针指向l1,且l1向后移动
pNode->next = l1;
l1 = l1->next;
}
else { //反之,则新链表指针指向l2,且l2向后移动
pNode->next = l2;
l2 = l2->next;
}
pNode = pNode->next; //pNode总是指向新链表的最后一个非空结点
}
pNode->next = (l1 == nullptr) ? l2 : l1; //循环结束后,pNode指向还没遍历完的链表。
return phead->next;
}
};