int OutCombine(Node* p1, Node* p2)
{
while(p1!=NULL && p2!=NULL)
{
if(p1->value>p2->value)
{
cout<<p2->value<<" ";
p2=p2->pNext;
}
else if(p1->value<p2->value)
{
cout<<p1->value<<" ";
p1=p1->pNext;
}
else
{
cout<<p1->value<<" ";
p1=p1->pNext;
p2=p2->pNext;
}
}
if(p1!=NULL)//剩余的部分直接添加到末尾。
{
while(p1!=NULL)
{
cout<<p1->value<<" ";
p1=p1->pNext;
}
cout<<endl;
}
else if(p2!=NULL)
{
while(p2!=NULL)
{
cout<<p2->value<<" ";
p2=p2->pNext;
}
cout<<endl;
}
return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
srand(time(0));
int plength1=rand()%10;
int plength2=rand()%10;
Node* p1=NULL;
Node* p2=NULL;
int startvaluep1=0;
int startvaluep2=0;
for(int i=0;i<plength1;++i)
addEnd(startvaluep1=rand()%3+startvaluep1,p1);
for(int i=0;i<plength2;++i)
addEnd(startvaluep2=rand()%3+startvaluep2,p2);
print(p1);
print(p2);
OutCombine(p1,p2);
getchar();
return 0;
}
写正确函数需要注意的地方:两个非降序链表的并集,1>2>3和2>3>5合并为1>2>3>5。
最新推荐文章于 2020-10-26 19:56:14 发布