链表问题为了解题方便,一般都会建立伪头节点dummyhead。其他部分按照归并排序一样比较并尾部插入就行了。如果有一个指针指向nullptr,那么另一个指针所指链表剩下的数一定都要大于当前尾部的数,直接尾部插入即可。
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* Merge(ListNode* pHead1, ListNode* pHead2) {
ListNode* dummyhead = new ListNode(0), *tail = dummyhead, *p1 = pHead1, *p2 = pHead2;
while (p1 && p2) {
if (p1->val < p2->val) {
tail->next = p1;
tail = p1;
p1 = p1->next;
}
else {
tail->next = p2;
tail = p2;
p2 = p2->next;
}
}
if (!p1) tail->next = p2;
else tail->next = p1;
return dummyhead->next;
}
};

京公网安备 11010502036488号