-
Notifications
You must be signed in to change notification settings - Fork 2
Open
Description
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
#define m 100
typedef struct link_node{
char number[m];
char name[m];
char xi[m];
char classnumber[m];
}node;
typedef struct link_table{
node r[m];
}table;
table *create(int n)
{
table *tab=(table *)malloc(sizeof(table));
char number[20],xi[20],classnumber[20];
char name[10];
int i=1;
printf("please input name,number,xi and classnumber:\n");
while(i<=n)
{
scanf("%s%s%s%s",name,number,xi,classnumber);
strcpy(tab->r[i].name,name);
strcpy(tab->r[i].number,number);
strcpy(tab->r[i].xi,xi);
strcpy(tab->r[i].classnumber,classnumber);
i++;
}
return tab;
}
table *quicksort(table *tab,int left,int right)
{
int i,j;
if(left<right)
{
i=left;j=right;
tab->r[0]=tab->r[i];
do
{
while(strcmp(tab->r[j].number,tab->r[0].number)==1&&i<j)j--;
if(i<j)
{
tab->r[i]=tab->r[j];
i++;
}
while(strcmp(tab->r[i].number,tab->r[0].number)==-1&&i<j)i++;
if(i<j)
{
tab->r[j]=tab->r[i];
j--;
}
}while(i!=j);
tab->r[i]=tab->r[0];
quicksort(tab,left,i-1);
quicksort(tab,i+1,right);
}
return tab;
}
void search(table *tab,char y[],int n)
{
int i=n;
printf("姓名 卡号 系名 班号 \n");
while(i>0)
{
if(strcmp(tab->r[i].xi,y)==0)
{
printf("%5s%15s%15s%15s\n",tab->r[i].name,tab->r[i].number,tab->r[i].xi,tab->r[i].classnumber);
i--;
}
else i--;
}
}
void display(table *tab,int n)
{
int i=1;
printf("姓名 卡号 系名 班号 \n");
while(i<=n)
{
printf("%5s%15s%15s%15s\n",tab->r[i].name,tab->r[i].number,tab->r[i].xi,tab->r[i].classnumber);
i++;
}
}
int main()
{
int n,left,right;
char y[20];
printf("please input n:\n");
scanf("%d",&n);
left=1;right=n;
table *tab,*tab1;
tab=create(n);
tab1=quicksort(tab,left,right);
printf("按卡号排序结果是:\n");
display(tab1,n);
printf("please input xi:\n");
scanf("%s",y);
search(tab,y,n);
return 0;
} Metadata
Metadata
Assignees
Labels
No labels
