您的位置:首页 > 编程语言 > C语言/C++

剑指offer第十六题【合并两个排序的链表】c++实现

2015-10-16 19:12 555 查看
合并两个排序的链表

参与人数:2725时间限制:1秒空间限制:32768K
通过比例:24.54%
最佳记录:0 ms|8552K(来自  大工zay


题目描述

输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
新建一个链表然后遍历两个链表。
或者使用递归,面试没准考哪个。

ListNode* Merge(ListNode* pHead1, ListNode* pHead2)
{
if(!pHead1){
return pHead2;
}else if(!pHead2){
return pHead1;
}else if(!pHead1&&!pHead2){
return NULL;
}
//    if(pHead1->val<pHead2->val){
//        pHead1->next=Merge(pHead1->next,pHead2);
//<span style="white-space:pre">	</span>  return pHead1;
//    }else{
//        pHead2->next=Merge(pHead1,pHead2->next);
//        return pHead2;
//    }
ListNode* orderList=NULL;
if(pHead1->val<pHead2->val){
orderList=pHead1;
pHead1=pHead1->next;
}else{
orderList=pHead2;
pHead2=pHead2->next;
}
ListNode *res=orderList;
while(true){
if(!pHead1){
orderList->next=pHead2;
break;
}else if(!pHead2){
orderList->next=pHead1;
break;
}else{
if(pHead1->val<pHead2->val){
orderList->next=pHead1;
orderList=orderList->next;
pHead1=pHead1->next;
}else{
orderList->next=pHead2;
orderList=orderList->next;
pHead2=pHead2->next;
}
}
}
return res;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言 剑指offer 算法