#include<stdio.h>
#include<stdlib.h>
#define LEN sizeof(struct Student)
struct Student //创建结构体
{
int num; //存放数据
struct Student *next; //指针
};
struct Student *creat() //构造创建链表函数
{
struct Student *head,*p1,*p2;
head = (struct Student *)malloc(LEN); //建立头结点
p1 = p2 = (struct Student *)malloc(LEN);//首元结点
scanf("%d",&p1->num);
head->next = p1; //将头结点与首元结点链接
while(p1->num != 0) //当数据不为0是执行循环,否则停止创建链表
{
p1 = (struct Student*)malloc(LEN);
p2->next = p1;
p2 = p1;
scanf("%d",&p1->next);
}
p2->next = NULL;
return head;
}
struct Student *sort(void) //两个链表合并
{
struct Student *head1,*head2,*head,*p,*p1,*h1;
p = head;
head1 = creat(); //调用创建链表函数
head2 = creat();
p1 = head1->next; //p1指向创建链表的首元结点
h1 = head2->next;
head = head1; //用一个指针指向两个创建链表的中任意一个头结点
while(p1->next != NULL && h1->next != NULL)
{
if(p1->num > h1->num)
{
p->next = p1;
p = p1;
p1 = p1->next;
}
else
{
p->next = h1;
p = h1;
h1 = h1->next;
}
}
p->next = (p1 != NULL)?p1:h1;
return(head);
}
void print(struct Student *head) //构造输出函数
{
struct Student *h;
h = head->next; //h指向首元节点
if(h == NULL){
printf("null");
return;
}
while(h != NULL)
{
printf("%d ",h->num);
h = h->next;
}
}
int main()
{
struct Student *head;
head = sort();
print(head);
return 0;
}
![](https://profile-avatar.csdnimg.cn/5ba8bfcaf48c4f79a1de0529218fbb6c_better_man_007.jpg!4)
C语言合并两个链表,为啥不能输出,救命。
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- CSDN专家-link 2021-09-26 18:37关注
scanf("%d",&p1->next);
改成
scanf("%d",&p1->num);本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥200 csgo2的viewmatrix值是否还有别的获取方式
- ¥15 Stable Diffusion,用Ebsynth utility在视频选帧图重绘,第一步报错,蒙版和帧图没法生成,怎么处理啊
- ¥15 请把下列每一行代码完整地读懂并注释出来
- ¥15 pycharm运行main文件,显示没有conda环境
- ¥15 寻找公式识别开发,自动识别整页文档、图像公式的软件
- ¥15 为什么eclipse不能再下载了?
- ¥15 编辑cmake lists 明明写了project项目名,但是还是报错怎么回事
- ¥15 关于#计算机视觉#的问题:求一份高质量桥梁多病害数据集
- ¥15 特定网页无法访问,已排除网页问题
- ¥50 如何将脑的图像投影到颅骨上