题目描述:
Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.
很简单就是一个归并两个已经排好序的两个链表。也是归并排序中核心的代码。主要用到了链表的知识,考验了链表的构建。
下面是解答:
class Solution {
public:
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
if (l1 == NULL&&l2 == NULL) {
return NULL;
}
ListNode* p = new ListNode(0);
ListNode* result = p;
ListNode* rl1 = l1;
ListNode* rl2 = l2;
while (rl1 != NULL || rl2 != NULL) {
//当有一个链表已经为空
if (rl1 == NULL) {
p->next = rl2;
break;
}
else if (rl2 == NULL) {
p->next= rl1;
break;
}
//每次获取较小的那个值来构建链表
else if (rl1->val<rl2->val) {
p->next = new ListNode(rl1->val);
rl1 = rl1->next;
p = p->next;
}
else if (rl1->val >= rl2->val) {
p->next = new ListNode(rl2->val);
rl2 = rl2->next;
p = p->next;
}
}
return result->next;
}
};