Y


私信TA

用户名:uq_70775948495

访问量:45

签 名:

等  级
排  名 10761
经  验 1065
参赛次数 0
文章发表 8
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

TA的其他文章

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

参考代码:

#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;

}


 

0.0分

0 人评分

  评论区

  • «
  • »