#include
#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,*q = NULL;
int max = p->next->num;
while((p->next )!= NULL)
{
if(max < (p->next->num))
{
max = p->next->num;
q = p->next;
q->next = NULL;
p->next = p->next->next;
}
else p = p->next;
}
return q;
}
node* sort(node L,node *L1)
{
node *q,*k;
k = (node)malloc(sizeof(node));
k = L;
k->next = NULL;
while((q = max(L1)) != NULL)
{
k->next = q;
k = 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(L1);
//sort(L,L1);
print(sort(L,L1));
system("pause");
}
#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,*q = NULL;
int max = p->next->num;
while((p->next )!= NULL)
{
if(max < (p->next->num))
{
max = p->next->num;
q=p->next;
if (p->next->next!=NULL)
{
p->next=p->next->next;
}
else
p->next=NULL;
q->next=L->next;
L->next=q;
}
else
p = p->next;
}
return L;
}
node* sort(node *L,node *L1)
{
node *q,*k=NULL,*res=NULL;
while((q = max(L1)) != NULL)
{
k = (node *)malloc(sizeof(node));
k->num=q->next->num;
k->score=q->next->score;
k->next=NULL;
if (res==NULL)
{
res=k;
}
else
{
node *ss=res;
while (ss->next!=NULL)
{
ss=ss->next;
}
ss->next=k;
}
if (L1->next->next!=NULL)
{
L1->next=L1->next->next;
}
else
break;
}
return res;
}
void print(node *L)
{
node *p = L;
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(L,L1));
system("pause");
}
http://blog.csdn.net/guoyong10721073/article/details/9108773
你需要将你的**比较后的结果循环输出**,不循环的话只输出比较后的第一个值或者最后一个值