解题思路:
只是为了记录代码,方便查阅
注意事项:

参考代码:

#include<stdio.h>

#include<stdlib.h>

//创建一个管理结构体

typedef struct student

{

    int number;    //学号

    int gread;     //成绩


    struct student *next;  //后继指针

}Lnode;

//新节点函数,通过传入的节点个数来创建新节点个数

Lnode *Creat_NeWNode(int n)

{

    Lnode *head = malloc(sizeof(Lnode)); //给头结点申请空间

    head->next = NULL;     //指针域

    Lnode *q = head;       //创建新指针指向头结点

    Lnode *p;              //创建新节点


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

    {

        p = malloc(sizeof(Lnode));//给新节点申请空间

        scanf("%d%d",&(*p).number,&(*p).gread);//输入结构体元素

        p->next = q->next;//插入新节点

        q->next = p;

        q = p;//更新q节点为p,方便后续插入

    }

    return(head);//最后返回头结点

}


//输出每个节点的信息

void output(Lnode *head)

{

    Lnode *p = head->next;

    Lnode *q;//用于释放结点,让数据输出(打印)后释放

    while(p!=NULL)

    {

        printf("%d %d\n",p->number,p->gread);

        q = p;

        p = p->next;

        free(q);//释放节点

    }

}


void oreder(Lnode* l1,Lnode *l2)

{

    Lnode *q; //定义一个指针

    //有两个表,表a,表b,要让表a和表b连接在一起

    q = l1;

    l2 = l2->next;

    while(q->next!=NULL)

    {

        q = q->next;

    }//现在q指针指向表a的最后一个节点

    q->next = l2;//让q指向表b的有效首元素节点,至此完成连接

    q = l1->next;//让指针q指向表a的有效首元素节点

   

    Lnode *min;//定义指针指向最小学号节点

   

    int i; //定义变量保存最小学号

    int n,g;  //用于交换数据时候的临时变量

    Lnode *p;//定义指针p,用于循坏时找到最小学号所在节点


    for(;q!=NULL;q = q->next)

    {

        p = q;

        i = p->number;

        min = p;

        for(;p!=NULL;p = p->next)

        {

            if(p->number<i)

            {

                i = p->number;

                min = p;

            }

        }

        n = q->number;//用n记录首元素节点的数据;        

        q->number = min->number;//将最小学号节点的元素赋值给首节点的元素

        min->number = n;


        g = q->gread;

        q->gread = min->gread;

        min->gread = g;

    }

    output(l1);

}


int main()

{

    int n,m;

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

    Lnode *head1= Creat_NeWNode(n);;

    Lnode *head2= Creat_NeWNode(m);;

   

    oreder(head1,head2);

    return 0;

}


点赞(2)
 

0.0分

0 人评分

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

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

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

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

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

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

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

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

评论列表 共有 0 条评论

暂无评论