欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

通讯录排序

程序员文章站 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;
}
相关标签: C语言