马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
问题:有时候能全部合并到一个链表中,有时候会丢掉重复的一些。不知道哪里出错了
成功的情况
不成功的情况
这一块是合并两个有序链表的函数LinkList* Combine(LinkList **La,LinkList **Lb){
LinkList *cura = *La;
LinkList *curb = *Lb;
LinkList *prevNode = NULL;
LinkList *nextNode = NULL;
while(cura!=NULL&&curb!=NULL){
if((cura->data)<=(curb->data)){
prevNode = cura;
cura = cura->next;
}else{
nextNode = curb->next;
prevNode->next = curb;
curb->next = cura;
curb = nextNode;
}
}
if(cura==NULL){
printf("La为空\n");
prevNode->next = curb;//为什么cura = curb 不可以?
}else{
printf("Lb为空\n");
}
return *La;
}
这个是用主函数调用int main(){
LinkList *La = NULL;//初始化
LinkList *Lb = NULL;
ElemType e;//插入的元素的值
int i;
int num1=5,num2=8;//链表中元素的个数
//链表La
for(i=0;i<num1;i++){
printf("请输入赋给链表La中第%d个元素的值:",(i+1));
scanf("%d",&e);
TailInsert(&La,e);
}
printf("链表La: ");
PrintLinkList(La);
//链表Lb
for(i=0;i<num2;i++){
printf("请输入赋给链表Lb中第%d个元素的值:",(i+1));
scanf("%d",&e);
TailInsert(&Lb,e);
}
printf("链表Lb: ");
PrintLinkList(Lb);
La = Combine(&La,&Lb);
printf("合并后的链表: ");
PrintLinkList(La);
int len = LengthLinkList(La);
printf("链表长度为%d\n",len);
return 0;
}
|