#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;
}
链表合并为什么错误呢
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- 技术专家团-小桥流水 2021-11-04 09:26关注
问题在于,你在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"); }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 在不同的执行界面调用同一个页面
- ¥20 基于51单片机的数字频率计
- ¥50 M3T长焦相机如何标定以及正射影像拼接问题
- ¥15 keepalived的虚拟VIP地址 ping -s 发包测试,只能通过1472字节以下的数据包(相关搜索:静态路由)
- ¥20 关于#stm32#的问题:STM32串口发送问题,偶校验(even),发送5A 41 FB 20.烧录程序后发现串口助手读到的是5A 41 7B A0
- ¥15 C++map释放不掉
- ¥15 Mabatis查询数据
- ¥15 想知道lingo目标函数中求和公式上标是变量情况如何求解
- ¥15 关于E22-400T22S的LORA模块的通信问题
- ¥15 求用二阶有源低通滤波将3khz方波转为正弦波的电路