永发信息网

请问这个C语言通讯录怎么按名称排序显示

答案:4  悬赏:0  手机版
解决时间 2021-02-21 18:54
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct PersonalInfo//定义一个结构体,名字是PersonalInfo,这样就可以使用struct PersonalInfo来定义变量。
{
char name[50];
char address[30];
char telno[30];

struct PersonalInfo *next;
}INFO;
INFO *head;
void Initiate();
void Menu();
void Create();//的功能是:创建新的通讯录。
void Add();// 在通讯录的末尾,写入新的信息,并返回选单
void Find();//查找记录
void Alter();//修改记录如果未找到要修改的人,则提示通讯录中没有此人的信息,并返回选单。
void Delete();//删除某人的信息,如果未找到要删的人,提示通讯录中没有此人的信息,并返回选单。
void List();//的功能是:显示通讯录中的所有记录。
//初始化
void Initiate()
{
if((head=(INFO *)malloc(sizeof(INFO)))==NULL) exit(1);
head->next=NULL;//按照info这个变量划分出来的储存空间,由头指针head指向,如果这个指向info的指针为空,则退出,否则 head指向的下一个结点为空
}
//显示菜单
void Menu()
{
printf("**************欢迎使用通讯录系统**************");
printf("\n");
printf("\n");
printf(" 1.创建通讯录。\n");
printf(" 2.插入信息。\n");
printf(" 3.查询记录\n");
printf(" 4.修改记录\n");
printf(" 5.删除记录!\n");
printf(" 6.按联系人名称排序显示所有记录\n");
printf(" 7.保存通讯录!\n");
printf(" 0.退出通讯录\n");
printf(" 请输入0~7 \n");
}
//创建通讯录
void Create()
{
INFO *p1[100],*p2;
int m,i;
printf("请输入创建个数:");
scanf("%d",&m);
for(i=1;i<=m;i++)
{
p1[i]=(INFO *)malloc(sizeof(INFO));
printf("请输入第%d条信息!\n",i);
printf("姓名:\n");
scanf("%s",&p1[i]->name);
printf("地址:\n");
scanf("%s",&p1[i]->address);
printf("电话:\n");
scanf("%s",&p1[i]->telno);
p1[i]->next=NULL;
if(head->next==NULL)
head->next=p1[i];
else
{
for(p2=head;p2->next!=NULL;p2=p2->next); //找到结点尾
p2->next=p1[i];
}
}
printf("信息已添加!\n");
return; //保存到链表
}
//显示所有记录
void List()
{
INFO *p;
if(head->next==NULL)
{
printf("此通讯录中无记录!\n");
return;
}
printf("姓名\t地址\t电话\n");
for(p=head->next;p!=NULL;p=p->next)
printf("%s\t%s\t%s\n",p->name,p->address,p->telno);
}
最佳答案
用 strcmp(name一,name二) 作比较,name一 > name二 做交换。 当然 要把名字(字符串)全化成大写或全小写再比较。 假定都是小写: #include struct TXL { char name[二0]; char phone[二0]; char address[50]; // 你还可以添别的项,不一定是 char 型 }; #define N 四 // 例子里用 四 个人 int main() { struct TXL txl[N]={ "zhang","一二三四5","abcd", "wang","一二三四5","efg", "li","一二三四5","hijk", "zhao","一二三四5","xyz"}; // 声明结构数组,并初始化,当然你可以改用输入语句输入 struct TXL t; // t 用来 排队比较交换时,用作 工作单元 int i,j; for (i=0;i<N-一;i++) for (j=i;j 0){ // 比较 t=txl[i]; txl[i]=txl[j];txl[j]=t; // 交换 } } for (i=0;i<N;i++) printf("%s %s %s\n",txl[i].name,txl[i].phone,txl[i].address); //输出结果
全部回答
鄙人求代码这个查询代码!
使用任意一种排序算法(如冒泡排序、快速排序、归并排序等)排序,排序元素为结构体,排序依据为姓名,比较两个字符串的大小可以用strcmp(str1,str2)函数,若str1>str2返回正数,若str1=str2返回0,若str1<str2返回负数。
你个没出息的东西,你父母花了那么多钱供你上学,你看看你,都学了点什么!还来网上找人做作业!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
啤酒2元一瓶,四个瓶盖可换一瓶啤酒,2个空瓶也
四川那里种植青刺果
石门楼怎么去啊,有知道地址的么
现在银行贷款好贷吗
如果遇到一个强势女上司,该怎么办
怎样设置电脑断网时间
动物行为是指一系列有利于动物个体生存和繁殖
为什么我玩游戏的时候一直按某个键盘上的键游
领域网络磁场地址在哪,我要去那里办事
小学生二年级作业,巧填成语,最高的人(顶天立
智富圈怎么样
金鹗公园管理中心南门综合管理所在什么地方啊
千灯海信专卖店怎么去啊,有知道地址的么
和田玉容易碎吗
内邱吧听说马河村要大乱是不是真的啊.
推荐资讯
随机变量的方差描述随机变量偏离其期望值的程
怎么把图修成高清图?
a²sinπ/2+abcosπ-b²tan3/4π-abc
求一部美国电影,应该是西部片,有一个角色叫
出租房信息发布怎么写
刚租的房子怎么进行消毒,打扫房间?
1月8号女朋友过生给她摆蜡烛,想给她说一些简
长春收费站(G12珲乌高速入口)在哪里啊,我有
在别人公司打工,然后自己买公司里的货卖出去
猪头肉怎么卤才脆
中国邮政储蓄银行卡淘宝联名卡要年费的吗
佳艺窗帘怎么去啊,有知道地址的么
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?