#include
#include
#include
typedef struct Student
{
int num;
float score;
struct Student *next;
}node;
node* create()
{
int n;
printf("please input n:\n");
scanf("%d",&n);
node *L,*newp,*end;
L = (node *)malloc(sizeof(node));
L->next = NULL;
end = L;
for(int i = 0;i < n;i++)
{
newp = (node*)malloc(sizeof(node));
scanf("%d%f",&newp->num,&newp->score);
end->next = newp;
end = newp;
}
end->next = NULL;
return L;
}
void combine(node* L1,node* L2)
{
node *p1,*p2;
p1 = L1->next;
p2 = L2;
while(p1->next!=NULL)
{
p1 = p1->next;
}
p1->next = p2->next;
}
node* max(node L)
{
node *p = L,*s = NULL;int m;
node *q = (node)malloc(sizeof(node));
q->next = NULL;
if(p->next != NULL)
return NULL;
else {
m = p->next->num;
q->next = p->next;
while((p->next )!= NULL)
{
if(m < (p->next->num))
{
m = p->next->num;
q->next =p->next;
s->next = p->next;
}
p = p->next;
}
if(s->next != NULL)
{
s->next=s->next->next;
}
return q;
}
}
node* sort(node L)
{
node *s = (node)malloc(sizeof(node));
s->next = NULL;
node *q,*p = s;
while(q = max(L))
{
p->next = q;
p = q;
}
return L;
}
void print(node *L)
{
node *p = L->next;
while(p != NULL)
{
printf("%d %f \n",p->num,p->score);
p = p->next;
}
}
void main()
{
node *L1,*L2;
node *L = (node *)malloc(sizeof(node));
L->next = NULL;
L1 = create();
L2 = create();
combine(L1,L2);
print(sort(L1));
system("pause");
}