#include<stdio.h>
#include<alloc.h>
#include<string.h>
typedef struct _student{
char name[20];
int number;
struct _student *next;
}stu;
stu student[40];
int main()
{
int n,i,j=0,c;
stu *head,*tmp,*p,*bottom;
printf("pleade input the number of student:");
scanf("%d",&n);
for(i=0;i<n;i++){
printf("please input %2d ge student:",(i+1));
scanf("%s %d",&student[i].name,&student[i].number);
}
p=(stu *)malloc(sizeof(stu));
p->number=student[j].number;
strcpy(p->name,student[j].name);
head=p;
bottom=p;
for(j=1;j<n;j++){
if(student[j].number<head->number){
tmp=(stu *)malloc(sizeof(stu));
tmp->number=student[j].number;
strcpy(tmp->name,student[j].name);
tmp->next=head;
p=tmp;
head=tmp;
}
else if(student[j].number>bottom->number){
tmp=(stu *)malloc(sizeof(stu));
tmp->number=student[j].number;
strcpy(tmp->name,student[j].name);
bottom->next=tmp;
bottom=tmp;
}
else {
for(head=p;head->next->number!=bottom->number;head=head->next){
if((student[j].number<head->next->number)&&(student[j].number>head->number)){
tmp=(stu *)malloc(sizeof(stu));
tmp->number=student[j].number;
strcpy(tmp->name,student[j].name);
tmp->next=head->next;
head->next=tmp;
break;
}
}
}
}
head=p;
for(c=0;c<n;c++){
printf("%d: %s/t %d/n",c+1,head->name,head->number);
head=head->next;
}
return 0;
}
输入的数据:
pleade input the number of student: 7
please input 1 ge student:wo 65
please input 2 ge student:ta 44
please input 3 ge student:ni 3
please input 4 ge student:sa 66
please input 5 ge student:bu 24
please input 6 ge student:ti 35
please input 7 ge student:qi 53
输出的结果:
1: ni 3
2: bu 24
3: ti 35
4: ta 44
5: qi 53
6: wo 65
7: sa 66