解题思路:

注意事项:

参考代码:

#include<stdio.h>

#include<malloc.h>

typedef struct student//定义学生结构体

{

    int id;

    int score;

    struct Node *next;

}student;


student *creat(int n)//输入学生个体的值

{

    student *h;//定义一个头结点

    h=(student *)malloc(sizeof(student));

    h->next=NULL;//头结点指向空

    student *q=h;//q结点指向头结点 保持头结点不变

    student *p;//定义一个将要插入的结点

    for(int i=0;i<n;i++)//尾插法插入链表

    {

        p=(student*)malloc(sizeof(student));

        scanf("%d %d",&p->id,&p->score);

        p->next=q->next;

        q->next=p;

        q=p;

    }

    return (h);

}

void append(student *s1,student *s2)

{

    student* tail=s1;

    while(tail->next!=NULL)

    {

        tail=tail->next;

    }

    tail->next=s2->next;//s2链表头结点为空所以指向头结点的下一个结点

}

void swap(student *s1,student *s2)//交换函数 只需交换结点中的数值

{

    int tempid=s1->id;

    s1->id=s2->id;

    s2->id=tempid;

    int tscore=s1->score;

    s1->score=s2->score;

    s2->score=tscore;

}

void sort(student *s1)//排序函数

{

    student *star=s1->next;//定义一个初始结点指向链表头结点的下一个 因为头结点没有值

    while(star!=NULL)

    {

        student *p=star;//定义p结点为初始结点

        int minid=p->id;//定义最小学号

        student *min=p;//存放最小学号的结点

        while(p!=NULL)

        {

            if(p->id<minid)

            {

                minid=p->id;//更新最小值

                min=p;//更新最小结点

            }

            p=p->next;

        }

        swap(min,star);//最小结点与待排区结点的第一个交换

        star=star->next;

    }

}

void print(student *s1)

{

    student *h=s1->next;

    while(h!=NULL)

    {

        printf("%d %d\n",h->id,h->score);

        h=h->next;

    }

}

int main()

{

    int a,b;

    scanf("%d %d",&a,&b);

    student *s1=creat(a);//创建a链表

    student *s2=creat(b);//创建b链表

    append(s1,s2);

    sort(s1);

    print(s1);

    return 0;

}


点赞(0)
 

0.0分

1 人评分

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

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

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

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

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

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

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

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

评论列表 共有 0 条评论

暂无评论