解题思路:

链表的优势在于插入数据时的高效性

注意事项:

单向链表节点之间的关系就像糖葫芦一样,一个连着一个,想吃(访问)他们其中的一个就得先访问前面的节点,将节点串一起的“棍子”就是结构体里的指针next。
(这里每个链表的第一个节点不存储数据)
参考代码:

#include<stdio.h>
#include<string.h>
#include<ctype.h>
#include<stdlib.h>
struct note
{
    int num;
    int score;
    struct note* next;
};//创建链表节点的结构体(节点内部含有数据)
struct note new1(int n)
{
    struct note* rear,hearder;
    hearder.next = NULL;
    rear = &hearder;
    hearder.num = -1;
    for (int i = 0; i < n; i++)
    {
        int num0,score0;
        scanf("%d %d",&num0,&score0);
        struct note* newnote = (struct note*)malloc(sizeof(struct note));
        newnote->num = num0;
        newnote->score = score0;
        newnote->next = NULL;
        rear->next = newnote;
        rear = newnote;
    }
    return hearder;//返回第一个节点(第一个节点不存储数据)
}//创建新链表的函数
void sort1(struct note *hearder)
{
    struct note* rear = hearder;
    struct note* i = hearder;
    i->num = -1;
    while (rear != NULL)
    {
        for (i = hearder; i != rear; i = i->next)
        {
            if (i->num > rear->num)
            {
                struct note tmp;
                tmp.num = i->num;
                tmp.score = i->score;
                tmp.next = NULL;
                i->num = rear->num;
                i->score = rear->score;
                rear->num = tmp.num;
                rear->score = tmp.score;
                continue;
            }
        }
        rear = rear->next;
    }
}//将链表按学号从小到大排序的函数
int main()
{
    int n1, n2;
    scanf("%d %d", &n1, &n2);
    struct note note1 = new1(n1);
    struct note note2 = new1(n2);
    for (struct note* i = &note1; i != NULL;i = i->next)
        if (i->next == NULL)
        {
             i->next = note2.next;
             break;
        }//将两个链表连接在一起(注意不要将首节点也接上去)
    sort1(&note1);
    for (struct note* i = &note1; i != NULL; i = i->next)
        if (i->num != -1)
        printf("%d %d\n", i->num, i->score);//打印
    return 0;
}


点赞(0)
 

0.0分

0 人评分

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

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

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

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

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

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

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

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

评论列表 共有 0 条评论

暂无评论