您的位置:首页 > 其它

写正确函数需要注意的地方:两个有序链表的合并

2012-08-19 16:45 344 查看
Node* merge(Node* p1, Node* p2)
{
//检验输入参数。
if(p1==NULL)
return p2;
else if(p2==NULL)
return p1;
Node* head;
Node* p;
if (p1->value>p2->value)
{//使得p1的第一个元素大于p2的。
p=p1;
p1=p2;
p2=p;
}
head=p=p1;//存储头结点。

for (p1=p1->pNext; p1!=NULL && p2!=NULL; )
{//添加较小的元素
if (p1->value>p2->value)
{
p->pNext=p2;
p=p->pNext;
p2=p2->pNext;
}
else
{
p->pNext=p1;
p=p->pNext;
p1=p1->pNext;
}
}

//将剩下的元素直接置于合并的链表后面。
if (p1==NULL)
{
p->pNext=p2;
}
else
p->pNext=p1;
return head;
}


1. 检验输入参数。

2. 头指针首先存储下来。

3. 循环结束后,将p1或者p2中的元素直接置于链表后面。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  null p2p 存储 merge
相关文章推荐