题解 | #合并两个排序的链表#
合并两个排序的链表
http://www.nowcoder.com/practice/d8b6b4358f774294a89de2a6ac4d9337
struct ListNode* Merge(struct ListNode* pHead1, struct ListNode* pHead2 ) {
struct ListNode *p= pHead1;
struct ListNode *q= pHead2;
struct ListNode *r=(struct ListNode*)malloc(sizeof(struct ListNode));//创建一个头节点
struct ListNode *head =r;//创建一个指向r的指针 方便后面return
while(p!=NULL&&q!=NULL){
if(p->val<=q->val){//跟着指针走 始终让r能在最前面
r->next=p;
p=p->next;
r=r->next;}
else{
r->next=q;
q=q->next;
r=r->next;
}
}
r->next=NULL;
if(p!=NULL)r->next=p;//比较完之后 表中还有剩下的数可以直接接上
if(q!=NULL)r->next=q;
return head->next;//一开始就忘记还要return了
}