我们老师是用的冒泡
我觉得还挺好理解的
/************************************************
*函数名: ch_swap(字符串交换)
*功能:交换结点内数据
*返回值:无
*************************************************/
void ch_swap(char t1[],char t2[])
{
char t[20]={0};
strcpy(t,t1);
strcpy(t1,t2);
strcpy(t2,t);
}
/************************************************
*函数名: in_swap(数字交换)
*功能:交换结点内数据
*返回值:无
*************************************************/
void in_swap(int t1,int t2)
{
char t=0;
t=t1;
t1=t2;
t2=t;
}
/************************************************
*函数名: vip_sort(分类排序会员信息)
*功能:分类排序会员信息
*返回值:无返回值
*************************************************/
void vip_sort(VIP* head)
{
int num; //子菜单选择
VIP *p1,*p2;
int flag; //flag是用来判断是否找到,
p2=NULL;
while(1)
{
printf("\n**************排序子菜单*******************\n");
printf("1.按编号排序(从低到高)\n");
printf("2.按按消费次数分类(从高到低)\n");
printf("3.返回主菜单\n");
printf("*******************************************\n");
fflush(stdin);
scanf("%d",&num); //选择你想要查询的方式
switch(num)
{
case 1:
while( head != p2)
{
p1 = head;
while( p1->next!= p2 )
{
if( p1->code > p1->next->code)
{
ch_swap(p1->clas,p1->next->clas);
ch_swap(p1->name,p1->next->name);
ch_swap(p1->sex,p1->next->sex);
ch_swap(p1->tel,p1->next->tel);
ch_swap(p1->birthday,p1->next->birthday);
in_swap(p1->times,p1->next->times);
}
p1 = p1->next;
}
p2= p1;
}
system("cls");
printf("通讯录已按照 编号 排序成功");
printf("\n===编号====会员等级====姓名====性别===电话============生日=======消费次数===\n\n");
while(p1!=NULL)
{
printf(" %d %s %s %s %s %s %d",p1->code,p1->clas,p1->name,p1->sex,p1->tel,p1->birthday,p1->times);
printf("\n");
p1=p1->next;
}
break;
case 2:
while( head != p2)
{
p1 = head;
while( p1->next!= p2 )
{
if( p1->times > p1->next->times)
{
ch_swap(p1->clas,p1->next->clas);
ch_swap(p1->name,p1->next->name);
ch_swap(p1->sex,p1->next->sex);
ch_swap(p1->tel,p1->next->tel);
ch_swap(p1->birthday,p1->next->birthday);
in_swap(p1->code,p1->next->code);
}
p1 = p1->next;
}
p2= p1;
}
system("cls");
printf("通讯录已按照 编号 排序成功");
printf("\n===编号====会员等级====姓名====性别===电话============生日=======消费次数===\n\n");
while(p1!=NULL)
{
printf(" %d %s %s %s %s %s %d",p1->code,p1->clas,p1->name,p1->sex,p1->tel,p1->birthday,p1->times);
printf("\n");
p1=p1->next;
}
break;
case 3:return;
default :printf("你输入错了,请你输入任意键返回排序子菜单...\n");
getch();
}
}
}