主题:经过思考后才请教的,实在想不透??????
void reverse_merge(LinkList &A,LinkList &B,LinkList &C)//把元素递增排列的链表A和B合并为C,且C中元素递减排列,使用原空间
{
pa=A->next;pb=B->next;pre=NULL; //pa和pb分别指向A,B的当前元素
while(pa||pb)
{
if(pa->data<pb->data||!pb)
{
pc=pa;q=pa->next;pa->next=pre;pa=q; //将A的元素插入新表
}
else
{
pc=pb;q=pb->next;pb->next=pre;pb=q; //将B的元素插入新表
}
pre=pc;
}
C=A;A->next=pc; //构造新表头
}//reverse_merge
分析:本算法的思想是,按从小到大的顺序依次把A和B的元素插入新表的头部pc处,最后处理A或B的剩余元素.
问题:1 这个表头插入不寻常,有点不理解
2 这个pc的出现不理解
3 插入后,元素是怎么连接的
4 pc=pa;q=pa->next;pa->next=pre;pa=q
pc=pb;q=pb->next;pb->next=pre;pb=q这两句实在看不懂
各位,解释一下 谢了啊
{
pa=A->next;pb=B->next;pre=NULL; //pa和pb分别指向A,B的当前元素
while(pa||pb)
{
if(pa->data<pb->data||!pb)
{
pc=pa;q=pa->next;pa->next=pre;pa=q; //将A的元素插入新表
}
else
{
pc=pb;q=pb->next;pb->next=pre;pb=q; //将B的元素插入新表
}
pre=pc;
}
C=A;A->next=pc; //构造新表头
}//reverse_merge
分析:本算法的思想是,按从小到大的顺序依次把A和B的元素插入新表的头部pc处,最后处理A或B的剩余元素.
问题:1 这个表头插入不寻常,有点不理解
2 这个pc的出现不理解
3 插入后,元素是怎么连接的
4 pc=pa;q=pa->next;pa->next=pre;pa=q
pc=pb;q=pb->next;pb->next=pre;pb=q这两句实在看不懂
各位,解释一下 谢了啊