while (pa!=NULL||pb!=NULL)确实有问题,应该是并的关系,当有一个链表循环完之后,跳出循环,判断是哪个链表的元素合并完了,然后将未执行完的链表加入pc,还有你LinkList pc=LC->next;这是让pc指向NULL,lc和pc之间没有建立联系,之后的printfthedata(LC)函数肯定出错。
建议你这样做
LNote *pa,*pb,*pc;
pa=La->next;
pb=Lb->next;
(*Lc)=pc=La;//无需再开辟新节点,直接用La的头结点即可
while (pa && pb)
{
if (pa->data>= pb->data)
{
pc->next=pa;pc=pc->next;pa=pa->next;
}
else
{
pc->next=pb;pc=pc->next;pb=pb->next;
}
}
pc->next=pa?pa:pb;//插入剩余部分,此语句的意思是若pa有剩余则用pa赋值,反之pb赋值
free(Lb);
while (pa!=NULL||pb!=NULL)
{
if (pa->data==pb->data)
这个逻辑有问题:
如果pa==null, pb!=NULL,则执行下面语句
有pa->data错误。
while (pa!=NULL||pb!=NULL)
改成
while (pa!=NULL&&pb!=NULL)