经典算法——箱子排序

来源:互联网 发布:大连 大数据 招聘 编辑:程序博客网 时间:2024/05/17 20:22

#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

原创粉丝点击