链表笔试题汇编(四)
2016-06-03 13:14
253 查看
题目:合并两个有序链表。
递归实现参考代码:LinkList *Merge(LinkList *pHead1,LinkList *pHead2)
{
if(pHead1==NULL)
{
return pHead2;
}
else if(pHead2==NULL)
{
return pHead1;
}
LinkList *pNewMergeHead=NULL;
if((pHead1->data) < (pHead2->data))
{
pNewMergeHead=pHead1;
pNewMergeHead->next=Merge(pHead1->next,pHead2);
}
else
{
pNewMergeHead=pHead2;
pNewMergeHead->next=Merge(pHead1,pHead2->next);
}
return pNewMergeHead;
}非递归实现参考代码:pLinkNode Merge(pList L1,pList L2)//合并两个有序链表
{
pLinkNode newHead=NULL;
if(L1==L2)
{
return L1;//相等时返回任意值均可
}
if( (L1==NULL) && (L2!=NULL) )
{
return L2;
}
if( (L1!=NULL) && (L2==NULL) )
{
return L1;
}
if(L1->data < L2->data)
{
newHead=L1;
L1=L1->next;
}
else
{
newHead=L2;
L2=L2->next;
}
pLinkNode cur=newHead;
while(L1 && L2)
{
if(L1->data < L2->data)
{
cur->next=L1;
L1=L1->next;
}
else
{
cur->next=L2;
L2=L2->next;
}
cur=cur->next;
}
if(L1)//L2或L1为空后
{
cur->next=L1;
}
else
{
cur->next=L2;
}
return newHead;
}
本文出自 “七月朔风” 博客,请务必保留此出处http://luminous.blog.51cto.com/10797288/1743529
递归实现参考代码:LinkList *Merge(LinkList *pHead1,LinkList *pHead2)
{
if(pHead1==NULL)
{
return pHead2;
}
else if(pHead2==NULL)
{
return pHead1;
}
LinkList *pNewMergeHead=NULL;
if((pHead1->data) < (pHead2->data))
{
pNewMergeHead=pHead1;
pNewMergeHead->next=Merge(pHead1->next,pHead2);
}
else
{
pNewMergeHead=pHead2;
pNewMergeHead->next=Merge(pHead1,pHead2->next);
}
return pNewMergeHead;
}非递归实现参考代码:pLinkNode Merge(pList L1,pList L2)//合并两个有序链表
{
pLinkNode newHead=NULL;
if(L1==L2)
{
return L1;//相等时返回任意值均可
}
if( (L1==NULL) && (L2!=NULL) )
{
return L2;
}
if( (L1!=NULL) && (L2==NULL) )
{
return L1;
}
if(L1->data < L2->data)
{
newHead=L1;
L1=L1->next;
}
else
{
newHead=L2;
L2=L2->next;
}
pLinkNode cur=newHead;
while(L1 && L2)
{
if(L1->data < L2->data)
{
cur->next=L1;
L1=L1->next;
}
else
{
cur->next=L2;
L2=L2->next;
}
cur=cur->next;
}
if(L1)//L2或L1为空后
{
cur->next=L1;
}
else
{
cur->next=L2;
}
return newHead;
}
本文出自 “七月朔风” 博客,请务必保留此出处http://luminous.blog.51cto.com/10797288/1743529
相关文章推荐
- CentOS 7系统之 lamp (php-fpm)详解
- 关于移植arm程序到x86遇到的struct对齐问题
- 链表笔试题汇编(三)
- 链表笔试题汇编(二)
- 链表笔试题汇编(一)
- Linux的inode的理解
- 面试题:数值的整数次方
- 巧用位运算求解二进制中1的个数
- 面试题:旋转数组的最小数字
- struct和typedef struct详细解析
- 【算法总结系列-6】深度优先搜索-Depth First Search,DFS
- 二维数组的查找
- 引用和指针的那些事儿
- C++入门小程序练习
- 字符串转化为整数的算法改进及优化
- 浅谈字符串处理函数(三)
- 浅谈字符串处理函数(二)
- 浅谈字符串处理函数的实现(一)
- 第六次课总结及思考
- 0603学术诚信与职业道德