解题思路:先定义一个带指针的结构体,然后定义一个创建链表的函数,一个连接两个链表的函数,一个排序并删除重复的函数,总的来说这就是链表的创建、合并和删除.

注意事项:1.链表创建函数中,链表创建结束的结构体中的结构体指针得赋成NULL,链表结束字符。

                2.链表排序和删除时,应该free()掉重复的结构体

参考代码:

#include<stdio.h>

#include<stdlib.h>

//声明模块

typedef struct students{

     int Id;

     int score;

     struct students *next;

}Stu;

Stu *creatl(int n);

void linkS(Stu *x1, Stu *x2);

void sort(Stu *x);

//主函数模块

int main()

{

     int n, m;

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

     Stu *head_a;

     Stu *head_b;

     head_a = creatl(n);

     head_b = creatl(m);

     linkS(head_a, head_b);

     sort(head_a);

     Stu *head;

     head = head_a->next;

     while (head!=NULL)

     {

         printf("%d %d\n", head->Id, head->score);

         head = head->next;

    

     }

    free( head_a);

     free( head_b);

     free( head);

     return 0;

}

//链表创建函数

Stu *creatl(int n)

{

     Stu *head, *node, *end;

     head = (Stu *)malloc(sizeof(Stu));

     end = head;

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

     {

         node = (Stu *)malloc(sizeof(Stu));

         scanf("%d %d", &node->Id, &node->score);

         end->next = node;

         end = node;

     }

     end->next = NULL;        //链表结束指针字符

     return head;

}

//链表连接函数

void linkS(Stu *x1,Stu *x2)

{

     while (1)

     {

    

         if (x1->next == NULL)

         {

             x1->next = x2->next;

             break;

         }

         x1 = x1->next;

     }

}

//链表排序并删除重复序号函数函数

void sort(Stu *x)

{

     Stu *pt, *pr;

     int a, b;

     for (pt = x; pt != NULL; pt = pt->next)

     {

         for (pr = pt->next; pr != NULL; pr = pr->next)

         {

             if (pt->Id > pr->Id)

             {

                 a = pt->Id;

                 b = pt->score;

                 pt->Id = pr->Id;

                 pt->score = pr->score;

                 pr->Id = a;

                 pr->score = b;

            

             }

         }

     }

  

     

    

}


实测通过


点赞(0)
 

0.0分

0 人评分

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

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

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

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

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

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

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

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

评论列表 共有 0 条评论

暂无评论