实现将一个单链升序和一个单链降序合并为单链升序的算法。 数据结构的
2个回答
展开全部
具体代码就不给出了,只是你要理解这个过和与思想就行了,升序与降序再合并为一个升序, 假设升序链A,降序链B,合并链为C。
那么要求C链也是升序的,那也就是从小到大排序。所以每次从A的前端,B的尾端(因为是单链的话,可以对B先进行反转,便于操作)进行比较,选出一个最小的值,插入到C链中,不断循环这个过程,直至全部插入为止。
过程如下:
//为了便于操作,可以先行对B降链进行反转,使其变成升序的单链
..对B链进行反转
while( A链非空 && B链非空 )
{
//比较A链中第一个与B链第一个的大小(因为对B进行了反转,又根据两者均为升序,所以在A链或是B链中,最小值均为第一个。
Node& min = MIN( A->head.value , B->head.value );
//插入到C链中
C.next = min;
//移动,如果取的是A中第一个,则移动A,取的是B链中的第一个,则移动B
..
}
//当跳出循环后,说明有一条链已经插入结束,可以对剩下的那一条链直接插入就可以了
if( A为空 )
{
//说明B链还没有插入完
将B链插入到C中
}
else
{
//将A中剩余的值插入C中
while( A非空 )
{
将A插入C,A移动,C移动
}
}
//此时完成了合并操作
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询