输入格式
第一行,a、b两个链表元素的数量N、M,用空格隔开。 接下来N行是a的数据 然后M行是b的数据 每行数据由学号和成绩两部分组成
输出格式
按照学号升序排列的数据
样例输入
复制
2 3 5 100 6 89 3 82 4 95 2 10
样例输出
复制
2 10 3 82 4 95 5 100 6 89
#include<stdio.h>
#include<stdlib.h>
typedef struct LNode{
int id;
int score;
struct LNode *next;
}LNode,*LinkList;
//尾插法创建链表
void createLink(LinkList *L,int n){
(*L)=(LNode*)malloc(sizeof(LNode));
(*L)->next=NULL;
LNode *s,*r=*L;
for(int i=0;i<n;i++){
s=(LNode*)malloc(sizeof(LNode));
scanf("%d %d",&s->id,&s->score);
r->next=s;
r=s;
}
r->next=NULL;
}
LinkList merge(LinkList s1,LinkList s2){
LNode *p=s1;
while(p->next!=NULL){
p=p->next;
}
p->next=s2->next;
return s1;
}
void ariseid_sort(LinkList L){
for(LNode *p=L->next;p!=NULL;p=p->next){
int tmp_id=0,tmp_score=0;
for(LNode *q=p->next;q!=NULL;q=q->next){
if(p->id>q->id){
tmp_id=p->id;
tmp_score=p->score;
p->id=q->id;
p->score=q->score;
q->id=tmp_id;
q->score=tmp_score;
}
}
}
}
int main(){
int N,M;
scanf("%d %d",&N,&M);
LinkList s1,s2;
createLink(&s1,N);
createLink(&s2,M);
LinkList L=merge(s1,s2);
ariseid_sort(L);
LNode *p=L->next;
while(p!=NULL){
printf("%d %d\n",p->id,p->score);
p=p->next;
}
}