码迷,mamicode.com
首页 > 其他好文 > 详细

链表笔试题汇编(四)

时间:2016-02-20 01:52:35      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:链表 合并

题目:合并两个有序链表。

递归实现参考代码:

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

链表笔试题汇编(四)

标签:链表 合并

原文地址:http://luminous.blog.51cto.com/10797288/1743529

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!