View Code of Problem 83

#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.


Back to problem 83