解题思路:先合并,再排序

注意事项:

参考代码:

#include <stdio.h>

#include<string.h>

#include<malloc.h>

#define MaxSize 100

typedef struct StuNode{

    int sno;

    int score;

    struct StuNode * next;

}StuNode,*StuList;


int main(){

    int n,m;

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

    StuList L1,L2,L3;

    L1=(StuNode*)malloc(sizeof(StuNode));

    L2=(StuNode*)malloc(sizeof(StuNode));

    L3=(StuNode*)malloc(sizeof(StuNode));

    L1->next=NULL;

    L2->next=NULL;

    L3->next=NULL;

    StuNode *p1,*p2 ,*p3;

    p1=L1;

    p2=L2;

    p3=L3;

    //L1

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

    {

        StuNode *stu=(StuNode*)malloc(sizeof(StuNode));

        scanf("%d %d",&stu->sno,&stu->score);

         stu->next=NULL;

         p1->next=stu;

         p1=p1->next;

    }

  //L2

  for(int i=0;i<m;i++)

    {

         StuNode *stu=(StuNode*)malloc(sizeof(StuNode));

         scanf("%d %d",&stu->sno,&stu->score);

         stu->next=NULL;

         p2->next=stu;

         p2=p2->next;

    }

    //L3,未排序,只合并

    p1=L1->next;p2=L2->next;


    p3->next=p1;

    while(p3->next) p3=p3->next;

    p3->next=p2;

    while(p3->next) p3=p3->next;

    p3->next=NULL;

   //L3 冒泡排序

   StuNode *cul;

    for(p3=L3->next;p3!=NULL;p3=p3->next){

        for(cul=L3->next;cul->next!=NULL;cul=cul->next){

            if(cul->sno>cul->next->sno){

                int sno=cul->sno;

                int score=cul->score;

                cul->sno=cul->next->sno;

                cul->score=cul->next->score;

                cul->next->sno=sno;

                cul->next->score=score;

            }

        }

    }

    //打印L3

    p3=L3->next;

    while(p3)

    {

        printf("%d %d\n",p3->sno,p3->score);

        p3=p3->next;

    }

   return 0;

}


点赞(0)
 

0.0分

0 人评分

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

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

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

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

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

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

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

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

评论列表 共有 0 条评论

暂无评论