/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* Merge(ListNode* pHead1, ListNode* pHead2)
{
if(pHead1 == NULL)
return pHead2;
if(pHead2 == NULL)
return pHead1;
ListNode* pHead = (ListNode*)malloc(sizeof(ListNode));
ListNode *q; //用来指向拿出来的节点
ListNode *pend; //用来指向新链表的末尾
pHead->next = NULL;
pend = pHead;
while(pHead1 && pHead2){
if(pHead1->val > pHead2->val){ //将pHead2首节点连接到新链表上
q = pHead2;
pHead2 = pHead2->next;
pend->next = q;
pend = pend->next;
pend->next = NULL;
}
else{
q = pHead1;
pHead1 = pHead1->next;
pend->next = q;
pend = pend->next;
pend->next = NULL;
}
}
if(pHead1)
pend->next = pHead1;
if(pHead2)
pend->next = pHead2;
q = pHead;
pHead = pHead->next;
free(q);
return pHead;
}
};
首先创建一个头指针,然后依次比较pHead1和pHead2的值,哪个小就把哪个接到新链表的末尾去,直到pHead1或者pHead2为空,将剩下的直接连接到新链表上去。