参考代码:

#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分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论