叁贰壹零 2021-11-04 08:54 采纳率: 33.3%
浏览 27
已结题

链表合并为什么错误呢

#include<stdio.h>
#include<stdlib.h>
typedef int ElementType;
typedef struct Node PtrToNode;
struct Node {
ElementType Data; /
存储结点数据 /
PtrToNode Next; /
指向下一个结点的指针 /
};
typedef PtrToNode List; /
定义单链表类型 /
List Read(); /
细节在此不表 /
void Print( List L ); /
细节在此不表;空链表将输出NULL */
List Merge( List L1, List L2 );
int main()
{
List L1, L2, L;
L1 = Read();
L2 = Read();
L = Merge(L1, L2);
Print(L);
Print(L1);
Print(L2);
return 0;
}
List Read(){
List head,rear,temp;
rear=(List)malloc(sizeof(struct Node));
rear->Next=NULL;
head=rear;
int N;
scanf("%d",&N);
while(N){
List p;
p=(List)malloc(sizeof(struct Node));
scanf("%d",&p->Data);
p->Next=NULL;
rear->Next=p;
rear=p;
N--;
}
temp=head;
head=head->Next;
free(temp);
return head;
}
void Print(List L){
for(;L;L=L->Next)
printf("%d ",L->Data);
printf("\n");
}
List Merge(List L1,List L2){
List La,Lb,Lc,p;
p=(List)malloc(sizeof(struct Node));
p->Next=NULL;
La=L1->Next;Lb=L2->Next;Lc=p;
while(La&&Lb){
if(La->Data<=Lb->Data){
Lc->Next=La;
Lc=Lc->Next;
La=La->Next;
}
else{
Lc->Next=Lb;
Lc=Lc->Next;
Lb=Lb->Next;
}
}
if(La)Lc->Next=La;
elseLc->Next=Lb;
L1->Next=NULL;
L2->Next=NULL;
return p;
}

img

  • 写回答

2条回答 默认 最新

  • 关注

    问题在于,你在Read函数中,把第一个空节点给删掉了,Print的时候也是从第一个节点开始显示的,但是在Merge函数中,反而从第二个节点开始显示的。第一个节点你直接忽略了。不该merge函数的话,就把read和print函数改了,修改如下:

    List Read(){
        List head,rear,temp;
        rear=(List)malloc(sizeof(struct Node));
        rear->Next=NULL;
        head=rear;
        int N;
        scanf("%d",&N);
        while(N){
            List p;
            p=(List)malloc(sizeof(struct Node));
            scanf("%d",&p->Data);
            p->Next=NULL;
            rear->Next=p;
            rear=p;
            N--;
        }
        //删掉这3句
        //temp=head;
        //head=head->Next;
        //free(temp);
        return head;
    }
    void Print(List L){
        L=L->Next;  //添加这一句
        for(;L;L=L->Next)
            printf("%d ",L->Data);
        printf("\n");
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月12日
  • 已采纳回答 11月4日
  • 创建了问题 11月4日

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题