通讯录排序
程序员文章站
2024-02-27 21:02:24
...
通讯录排序
【问题描述】建立一个通讯录的结构记录,包括姓名、年龄、电话号码。输n(n<10)个朋友的信息,再按他们的年龄从大到小的顺序依次输出其信息。
【输入形式】先输入n,再依次输入n个人的信息
【输出形式】输出按年龄排序后的通讯录
【样例输入输出】
#include<stdio.h>
#include<string.h>
typedef struct txl
{
char mi[10];
int sui;
char hao[20];
struct txl *next;
}TXL;
int main()
{
int n,i,j,min;
printf("Input n:");
scanf("%d",&n);
TXL *head=NULL,*p,*t;
for(i=0;i<n;i++)
{
printf("Input the name,age,telephone of the %d friend:",i+1);
p=(TXL *)malloc(sizeof(TXL));
t=(TXL *)malloc(sizeof(TXL));
scanf("%s%d%s",p->mi,&p->sui,p->hao);
p->next=head;
head=p;
}
printf("after sorted:\n");
for(j=0;j<n;j++){
min=head->sui;
p=head->next;
while(p!=NULL)
{
if(p->sui<=min)
{
min=p->sui;
}
p=p->next;
}
for(p=head,t=p->next;t!=NULL;t=p->next)
{
if(head->sui<=min){
printf("%s %d %s\n",head->mi,head->sui,head->hao);
p=head->next;
free(head);
head=p;
}
else if(t->sui<=min){
printf("%s %d %s\n",t->mi,t->sui,t->hao);
p->next=t->next;
}
else
p=t;
}
}
printf("%s %d %s\n",p->mi,p->sui,p->hao);
return 0;
}