解题思路:用尾插法建立带头结点的a,b链表,用a来存储排序后的链表,采用插入排序,分别将a,b链表逐个插入已经有序的a表,释放b头结点!

注意事项:

参考代码:

#include <stdio.h>

//#define INT_MAX 0x7fffffff

//#define INT_MIN 0x80000000

typedef struct Student{

    int num;

    int grade;

}Student;

typedef struct Node{

    Student data;

    struct Node *next;

}Node,*Linklist;

int main()

{

    Linklist a=(Linklist)malloc(sizeof(Node));

    Linklist b=(Linklist)malloc(sizeof(Node));

    Node *p,*s,*r,*pre,*q;

    int n,m,i;

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

    r=a;//用尾插法建立a链表

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

        s=(Node*)malloc(sizeof(Node));

        scanf("%d %d",&s->data.num,&s->data.grade);

        r->next=s;

        r=s;

    }

    r->next=NULL;

    r=b;//用尾插法建立b链表

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

        s=(Node*)malloc(sizeof(Node));

        scanf("%d %d",&s->data.num,&s->data.grade);

        r->next=s;

        r=s;

    }

    //使用a作为头结点对a进行插入排序

    r->next=NULL;

    p=a->next->next;

    pre=a;

    r=a->next;

    r->next=NULL;

    while(p)

    {

        while(r)//确定插入位置

            if(p->data.num>r->data.num){

                pre=r;

                r=r->next;

            }

            else

                break;

        q=p;//用q摘下节点

        p=p->next;

        q->next=r;

        pre->next=q;

        pre=a;

        r=a->next;

    }

    //将b中的节点插入已经有序的a链表

    p=b->next;

    pre=a;

    r=a->next;

    while(p)

    {

        while(r)//确定插入位置

            if(p->data.num>r->data.num){

                pre=r;

                r=r->next;

            }

            else

                break;

        q=p;//用q摘下节点

        p=p->next;

        q->next=r;

        pre->next=q;

        pre=a;

        r=a->next;

    }

    p=a->next;

    while(p)

    {

        printf("%d %d\n",p->data.num,p->data.grade);

        p=p->next;

    }

    free(b);//释放b节点

}


点赞(0)
 

0.0分

0 人评分

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

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

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

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

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

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

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

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

评论列表 共有 0 条评论

暂无评论