69,374
社区成员
发帖
与我相关
我的任务
分享
void MergeList_3(LinkList &La,LinkList &Lb)
{
LNode *pa,*pb,*p;
pa = La->next;
pb = Lb->next;
p = La;
p->next = NULL;
while(pa && pb)
{
if(pa->data == pb->data)
{
LNode *temp;
temp = pa;
pa = pa->next;
pb = pb->next;
temp->next = p->next;
p->next = temp;
}
else if(pa->data < pb->data)
{
pa = pa->next;
}
else
{
pb = pb->next;
}
}
}
可以参考一下上面的代码;
问题出在 if(pa->data == pb->data)判断条件体里。因为楼主的逻辑里,在将La链表里的数据放到新的链表里时,修改了原La的链表的下个节点。即当节点pa指向'b'时,pa->next就指向了NULL,所以La的'c'节点找不到了。
修改的办法如上,用temp指向要加到新的La的链表,然后让pa指向下一个节点,即‘c',最后再将temp链到新的La上。
最后的while(pa), while(pb)没有意义,建议删除。