Lakers


私信TA

用户名:uq_48402323256

访问量:541

签 名:

等  级
排  名 5936
经  验 1417
参赛次数 0
文章发表 1
年  龄 21
在职情况 学生
学  校 浙大城市学院
专  业 电子信息工程

  自我简介:

解题思路:1、先创建两个链表,用连接函数将两条链表连接起来

              2、用冒泡排序法,将比较后的两个节点数据域进行交换

              3、打印出链表,细节还是看代码吧

注意事项:注意连接链表需要前一个链表的最后一个节点,获取节点最好还是写个函数封装起来,这样看着更加清爽。还有冒泡排序中的循环条件不能搞错,尤其是内层。

参考代码:

#include<stdio.h>

#include<stdlib.h>

 typedef struct node{ 

  int num;

  int score;

  struct node* next;

 }Node,*Linklist;

 

 Linklist Create_linklist(int x){//头插法创建链表 

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

      L->next=NULL;

      Node* p;

      int i,n,m;

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

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

      p=malloc(sizeof(Node*));

      p->num=n;

      p->score=m;

      p->next=L->next;

      L->next=p;

     }

return L;

 }

 

  Node* get_lastnode(Linklist list){

     Node* p;

     p=list->next;

     while(p->next!=NULL){//找链表的最后一个节点的条件需要是它的下一个节点不为空,因为它最后一个节点是有值的 

         p=p->next;

     }

     return p;

 }

 

 Linklist connect_linklist(Linklist list1,Linklist list2){

      Linklist L=malloc(sizeof(Node*));

      Node* p=get_lastnode(list1);//得到第一个节点的尾节点 

      Node* s=list2;//第二个节点的头节点 

      p->next=s->next;

      free(s);

      return list1;

 }

 

 void bubble_sort(Linklist list){//冒泡排序 

      Node* p=list->next;

      Node* q=NULL;

      int temp1;

      int temp2;

      while(p!=q){ //也可为 p->next!=q 

          while(p->next!=q){

              if(p->num>p->next->num){//判断后进行数据交换 

                  temp1=p->num;

                  p->num=p->next->num;

                  p->next->num=temp1;

                  temp1=p->score;

                  p->score=p->next->score;

                  p->next->score=temp1;

                 }

                p=p->next;//每次内循环都将p往后移一个单位 

        }

    q=p;//将p赋给q,用于外层循环的条件判断,提高程序效率,让排好的位置不再进入排序中 

     p=list->next;//将p重置为头节点 

     }

 } 

 

 void print_Linklist(Linklist list){

     Node* p=list->next;

     while(p!=NULL){

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

         p=p->next;

         }


int main(){

     Linklist l;

     Linklist L;

     Linklist J;

     int n,m;

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

     l=Create_linklist(n);

     L=Create_linklist(m);

     J=connect_linklist(l,L);

     bubble_sort(l);

    // printf("排序后的数据:\n");

     print_Linklist(l);

     return 0;

}


 

0.0分

1 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区