灿烂的神


私信TA

用户名:Frank3821

访问量:19361

签 名:

十月一日那天,祝你幸福!

等  级
排  名 535
经  验 4445
参赛次数 2
文章发表 42
年  龄 23
在职情况 学生
学  校 临沂大学
专  业 计算机科学与技术

  自我简介:

每走一次捷径,就会丧失一点人性!

解题思路:





注意事项:





参考代码:

#include<stdio.h>

#include<malloc.h>


typedef struct Lnode{

     int no;

     int num;

     struct Lnode *next;

}*LinkList ,Lnode;


LinkList creat(int n){

     LinkList L;

     Lnode *p,*q;

     L=(LinkList)malloc(sizeof(Lnode));

     L->next=NULL;

     p=L;

     int x,y,i=0;

     while(i++<n){

         scanf("%d %d",&x,&y);

         q=(Lnode *)malloc(sizeof(Lnode));

         q->no=x;

         q->num=y;

         q->next=p->next;//就是普通的给链表在一个节点p后面增加一个接q

         p->next=q;

         p=q;

     }

     return L;


output(LinkList L){//LinkList L,不必加&,也可以有效的修改L,并且保存到L

     Lnode *p;

     p=L->next;//L是头指针,没有数据 

     while(p){//p相当于p!=NULL 

         printf("%d %d\n",p->no,p->num);

         p=p->next;

     }

}


LinkList Together(LinkList L,LinkList L2){

     Lnode *p;

     p=L->next;

     while(p->next!=NULL){//最后跳出循环的是最后一个节点 

         p=p->next;    

     }

     p->next=L2->next;

     return L;


order(LinkList L){

     Lnode *p,*q,*min;//min是用来保存每次循环中的学号最小节点,因为要互相替换 

     p=L->next;

     int n,g,t;

     while(p){

         min=p;//假设最小学号节点为p;此时的p;就好像数组中的a[0]

         t=p->no;//t为a[0]的值

         q=p->next;

         while(q){

             if(q->no<t){

                 min=q;

                 t=q->no;

             }

             q=q->next;

         }

         n=p->no;//筛选出来的除此之外的后面的最小的节点与此时的p节点互换

         g=p->num;

         p->no=min->no;

         p->num=min->num;

         min->no=n;

         min->num=g;

         p=p->next;

     }

     output(L);


int main(){

LinkList L,L2;

int n,m;

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

L=creat(n);

L2=creat(m);

L=Together(L,L2);

order(L);

return 0;

}


 

0.0分

0 人评分

  评论区

  • «
  • »