#include<stdio.h>

#include<stdlib.h>


//定义节点类型

typedef struct Node{

    int id;

    int score;

    struct Node *next;

}Node,*LinkedList;


//初始化链表

LinkedList Listint(){

    Node *L;

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

    if(L == NULL){

        exit(1);

    }

    L->next = NULL;

    return L;

}


//尾插法

LinkedList LinkedListH(LinkedList L ,int x){

    int i = 0;

    Node *p,*r;

    r = L;

    

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

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

        scanf("%d %d",&p->id,&p->score);

        r->next = p;

        r = p;

    }

    r->next = NULL;

    return L;

}


//遍历输出

void printList(LinkedList L){

    Node *p = L->next;

    while(p){

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

        p = p->next;

    }


//合并链表

LinkedList merge(LinkedList s1, LinkedList s2){

    Node *p = s1;

    while(p->next != NULL){

        p = p->next;

    }

    p->next = s2->next;

    return s1;

}


//排序

//一个数跟后面所有数相比

void arise(LinkedList L){

    Node *p,*q;

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

        int temp_id = 0, temp_score = 0;

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

            if(p->id > q->id)

            {

                temp_id = p->id;

                temp_score = p->score;

                p->id = q->id;

                p->score = q->score;

                q->id = temp_id;

                q->score = temp_score;

            }

        }

    }

}

int main()

{

int N,M;

scanf("%d %d",&N,&M);

LinkedList list1 = Listint();

LinkedList list2 = Listint();//初始化链表

LinkedListH(list1,N);//创建链表1

//printList(list1);

LinkedListH(list2,M);//创建链表2

//printList(list2);

LinkedList cat = merge(list1,list2);//合并链表

//printList(cat);

arise(cat);

printList(cat);

return 0;

}


点赞(0)
 

0.0分

0 人评分

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

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

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

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

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

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

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

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

评论列表 共有 0 条评论

暂无评论