原题链接:[编程入门]链表合并
#include<stdio.h>
#include<stdlib.h>
typedef struct student
{
int id;
int score;
struct student *next;
}student;
student *input(int n)//输入函数
{
student *head,*p1,*p2;
head=0;
for(int i=0;i<n;i++)
{
p1=(student*)malloc(sizeof(student));
scanf("%d%d",&(p1->id),&(p1->score));
if(head==0)
{
head=p1;
p2=p1;
}
else
{
p2->next=p1;
p2=p1;
}
}
p2->next=0;
return head;
}
void connect(student *head1,student *head2)//连接函数,将第二个链表的地址赋给第一个的结尾
{
student *p;
p=head1;
while(p->next!=0)
{
p=p->next;
}
if(p->next==0)
{
p->next=head2;
}
}
void sort(student *head,int n)//排序函数
{
student *p1,*p2;
p1=head;
p2=head;
int temp;
for(int i=0;i<n;i++)//利用冒泡法将两个学号比较,如果后面的学号比较小,将两个学号进行交换
{
for(int j=i+1;j<n;j++)
{
p2=p2->next;
if(p1->id>p2->id)
{
temp=p1->id;
p1->id=p2->id;
p2->id=temp;
temp=p1->score;//注意成绩也需要交换
p1->score=p2->score;
p2->score=temp;
}
}
p1=p1->next;
p2=p1;
}
}
void output(student *h)//输出函数
{
student *p;//用来释放结点
while(h!=0)
{
printf("%d %d\n",h->id,h->score);
p=h;
h=h->next;
free(p);//释放结点
}
}
int main()
{
student *head1,*head2;
int m,n;
scanf("%d %d",&m,&n);
head1=input(m);
head2=input(n);
connect(head1,head2);
sort(head1,m+n);
output(head1);
return 0;
}参考:https://www.zhihu.com/question/53645056先学习了这个程序
0.0分
10 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
void sort(student *head,int n)//排序函数 { student *p1,*p2,*l; p1=head; p2=head; int temp; for(int i=0;i<n-1;i++)//利用冒泡法将两个学号比较,如果后面的学号比较小,将两个学号进行交换 { int flag=0; for(int j=0;j<n-i-1;j++) { p2=p2->next; if(p1->id>p2->id) { temp=p1->id; p1->id=p2->id; p2->id=temp; temp=p1->score;//注意成绩也需要交换 p1->score=p2->score; p2->score=temp; flag=1; } p1=p1->next; }typedef struct student { int id; int score; struct student *next; }student; 这么写 student变成student没啥用啊void connect(student *head1,student *head2)//连接函数,将第二个链表的地址赋给第一个的结尾 { student *p; p=head1; while(p!=0) { p=p->next; } if(p==0) { p=head2; } } 31行的函数这么写为什么不对?麻烦问一下