解题思路:





注意事项:





参考代码:

#include <stdio.h>

#include <stdlib.h>

#include <malloc.h>


typedef struct student{

int num;

int grade;

struct student *next;

}Node,*node;


node create(int n);

void show(node n);

void sort(node a);

node merge(node a,node b);


void main()

{


int n,m;

printf("please input:\n");

scanf("%d %d",&n,&m);

node head1=create(n);

node head2=create(m);

node h=merge(head1,head2);

printf("sorted---------:\n");

sort(h);

show(h);

}


node create(int n){

node h;

h=(node)malloc(sizeof(Node));

h->next=NULL;

node q=h;

node p;

int i;

for(i=0;i<n;i++){

p=(node)malloc(sizeof(Node));

scanf("%d %d",&(*p).num,&(*p).grade);

p->next=q->next;

q->next=p;

q=p;

}

return h;

}


void show(node n){

node p=n->next;

while(p != NULL){

printf("%d %d\n",(*p).num,(*p).grade);

p=p->next;

}

}


void sort(node a){

node p=NULL;

while(p!=a){

node tmp=a;

for(tmp=a;tmp->next!=p;tmp=tmp->next){

if(tmp->num>tmp->next->num){

int t=tmp->num;

tmp->num=tmp->next->num;

tmp->next->num=t;


int g=tmp->grade;

tmp->grade=tmp->next->grade;

tmp->next->grade=g;

}

}

p=tmp;

}


}


node merge(node a,node b){

node head=a;

do{

a=a->next;

}while(a->next!=NULL);

a->next=b->next;

return head;

}









点赞(0)
 

0.0分

0 人评分

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

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

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

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

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

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

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

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

评论列表 共有 0 条评论

暂无评论