void MergeList(LinkList *La,LinkList *Lb,LinkList *Lc){
LNode *pa=La->next; // 指向a链表的第一个结点
LNode *pb=Lb->next; // 指向b链表的第一个结点
LNode *pc;
pc=Lc=La; // 指向a链表的头结点
while(pa!=NULL && pb !=NULL){
if(pa->data<pb->data){
pc->next=pa; // 指向pa的结点
pc=pa; // pc指针后移
pa=pa->next; // pa指针后移
}else if(pa->data>pb->data) {
pc->next=pb;
pc=pb;
pb=pb->next;
}else {
pc->next=pa;
pc=pa;
pa=pa->next;
LNode *q=pb->next; // 保存pb的下一个节点
free(pb); // 释放pb节点
pb =q;
}
}
pc->next=pa!=NULL?pa:pb; //插入剩余段
free(Lb);
}
int main() {
LinkList La;
initList(&La); // 初始化
listInsert(&La, 1, 1);
listInsert(&La, 2, 3);
// listInsert(&La, 3, 5);
// listInsert(&La, 4, 7);
// listInsert(&La,5, 9);
LinkList Lb;
initList(&Lb); // 初始化
listInsert(&Lb, 1, 2);
listInsert(&Lb, 2, 3);
// listInsert(&Lb, 3, 6);
// listInsert(&Lb, 4, 8);
// listInsert(&Lb,5, 10);
// 找出最大节点
// printf("La最大节点是:%d\n",getMaxElem(&La,5)->data);
// printf("Lb最大节点是:%d\n",getMaxElem(&Lb,5)->data);
// 排序
LinkList Lc;
initList(&Lc);
MergeList(&La,&Lb,&Lc);
printList(&Lc);
}
学习布置两个有序单单链表的合并,不能有重复元素
这个是啥问题啊