参考代码:
#include<stdio.h>
#include<malloc.h>
/*构造结构体*/
struct cell{
int x;
int score;
struct cell*next;
}cell[100];
/*建立链表*/
struct cell*build(int m){
int i=1;
struct cell*head,*p,*p0;
head=(struct cell*)malloc(sizeof(struct cell));
scanf("%d%d",&head->x,&head->score);
p0=head;
p0->next=NULL;
while(i<m){
p=(struct cell*)malloc(sizeof(struct cell));
scanf("%d%d",&p->x,&p->score);
p0->next=p;
p0=p;
p0->next=NULL;
i++;
}
return head;
}
/*合并两个链表*/
struct cell*combine(struct cell*p,struct cell*q){
struct cell*head;
head=p;
while(head->next!=0){
head=head->next;
}
head->next=q;
return p;
}
/*将学号排序并输出*/
void print(struct cell*head){
struct cell*p,*p0,*q,*r,*r0,*k;
p=head;
while(p!=0){
r=head;
while(r->x<p->x&&r->x!=p->x){
r0=r;
r=r->next;
}
if(r->x!=p->x){
q=p;
p0->next=p->next;
p0=p;
if(r->x==head->x){
q->next=head;
head=q;
}
else{
q->next=r;
r0->next=q;
}
}
p0=p;
p=p->next;
}
printf("%d %d",head->x,head->score);
k=head->next;
while(k!=0){
printf("\n%d %d",k->x,k->score);
k=k->next;
}
}
/*释放*/
void release(struct cell*head){
struct cell*p;
while(head!=0){
p=head->next;
free(head);
head=p;
}
}
int main(){
struct cell*head1,*head2,*result;
int m,n;
scanf("%d%d",&m,&n);
head1=build(m);
head2=build(n);
result=combine(head1,head2);
if(result==NULL){
printf("NULL");
}
else{
print(result);
}
release(result);
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复