#include <stdio.h> typedef struct student { int num; float score; struct student *next; }student; void creat(student*stu,int n) { int i; student *p; for(p=stu,i=0;p<stu+n;p++,i++)//pÖ¸ÏòµÚÒ»¸ö½Úµã£¬Ò»¹² n¸ö { scanf("%d %f",&p->num,&p->score); //i==n-1?p->next=NULL:p->next=&stu[i+1]; if(i == n-1) { p->next = NULL; } else p->next = &stu[i+1]; } } student *merge(student*stu1,student*stu2,int m) { stu1[m-1].next = stu2; student *p,*q,temp; for(p=stu1;p!=NULL;p=p->next) { for(q=p->next;q!=NULL;q=q->next) { if(p->num>q->num) { temp.num = p->num; p->num = q->num; q->num = temp.num; temp.score = p->score; p->score = q->score; q->score = temp.score; } } } return stu1;//·µ»ØÖ¸ÏòºÏ²¢ºóÁ´±íµÄÖ¸Õ룻 } void display(student *stu) { student *p; for(p=stu;p!=NULL;p=p->next) { printf("%d %.0f\n",p->num,p->score); } } int main() { int M,N; scanf("%d %d",&N,&M); student a[N],b[M]; creat (a,N); creat (b,M); merge(a,b,N); display(merge(a,b,N)); return 0; } |
Double click to view unformatted code.