|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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;
- }
复制代码
|
|