通讯录的制作数据结构C语言版Word格式文档下载.docx
- 文档编号:15198255
- 上传时间:2022-10-28
- 格式:DOCX
- 页数:12
- 大小:125.95KB
通讯录的制作数据结构C语言版Word格式文档下载.docx
《通讯录的制作数据结构C语言版Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《通讯录的制作数据结构C语言版Word格式文档下载.docx(12页珍藏版)》请在冰豆网上搜索。
structaddress*prior;
/*当前记录的指针*/
}list_entry;
structaddress*start;
/*指向列表中第一个入口*/
structaddress*last;
/*指向列表中最后一个入口*/
voidenter(),display(),search(),save(),load();
menu_select(),list(),delet(),inputs();
main()
{
chars[20],choice;
structaddress*info;
start=last=NULL;
/*列表长度清零*/
for(;
;
){/*列循环的一个用法*/
switch(menu_select()){
case1:
enter();
/*输入1,进入enter()程序,是输入通讯录*/
break;
case2:
delet();
/*输入2,进入delete()程序,是删除一个记录*/
case3:
list();
/*输入3,进入list()程序,是列表显示通信录*/
case4:
search();
/*输入4,进入search()程序,搜索一个街道*/
case5:
save();
/*输入5,保存列表到磁盘文件*/
case6:
load();
/*输入6,从磁盘文件读入列表*/
case7:
return(0);
}
}
}
/*选择一个选项*/
menu_select()
chars[20];
intc;
printf("
1.输入一个名字(直接回车则退出)\n"
);
2.删除一个名字\n"
3.列表显示\n"
4.搜索查询\n"
5.保存文件\n"
6.装入文件\n"
7.退出\n"
do{
printf("
\n输入您的选择:
"
gets(s);
c=atoi(s);
}while(c<
0||c>
7);
returnc;
/*输入名字和地址*/
voidenter()
structaddress*info,*dls_store();
){
info=(structaddress*)malloc(sizeof(list_entry));
if(!
info){
printf("
\n内存溢出"
return;
inputs("
输入姓名:
info->
name,10);
info->
name[0])break;
/*名字长度为0,停止输入*/
输入性别:
sex,2);
输入年龄:
age,2);
输入籍贯:
native,10);
输入电话:
telephone,12);
start=dls_store(info,start);
/*保存在第一个记录里*/
}/*输入循环*/
inputs(prompt,s,count)/*这个函数用于输入长度为count的一个字符串,用于防止字符串长度超过它的空间,并提出警告*/
char*prompt;
char*s;
intcount;
charp[255];
printf(prompt);
/*显示这个函数的字符串*/
gets(p);
/*从键盘获得255个输入*/
if(strlen(p)>
count)printf("
n字符串超过长度!
/*如果数组P中的长度超过调用函数中的参数count,提示*/
}while(strlen(p)>
count);
/*如果输入的字符串长度超过count,循环重新输入,否则退出,返回调用者*/
strcpy(s,p);
/*s是目标字符串,输出时字符串在s中*/
return(0);
/*产生一个又链接表,当一个新元素插入到列表的开始时,一个指向第一个元素的指针被返回*/
structaddress*dls_store(i,top)/*存贮顺序*/
structaddress*i;
/*新的元素*/
structaddress*top;
/*列表中的第一个元素*/
structaddress*old,*p;
if(last==NULL){/*列表中的第一个元素*/
i->
next=NULL;
prior=NULL;
last=i;
returni;
p=top;
/*从列表的顶部开始*/
old=NULL;
while(p){
if(strcmp(p->
name,i->
name)<
0){
old=p;
p=p->
next;
else{
if(p->
prior){
p->
prior->
next=i;
i->
next=p;
prior=p->
prior;
prior=i;
returntop;
}
i->
/*新的第一个元素*/
p->
returni;
old->
/*设置未尾*/
i->
prior=old;
last=i;
returnstart;
/*从列表中删除一个元素*/
delet()
structaddress*info,*find();
chars[10];
gets(s);
info=find(s);
if(info){
if(start==info){
start=info->
if(start)start->
elselast=NULL;
else{
info->
next=info->
if(info!
=last)
info->
next->
prior=info->
else
last=info->
free(info);
/*释放空间*/
structaddress*find(name)/*一个查找姓名的结构*/
char*name;
info=start;
while(info){
if(!
strcmp(name,info->
name))returninfo;
info=info->
/*获得下一个地址*/
姓名没有发现!
\n"
returnNULL;
/*没有发现姓名*/
list()/*列表*/
registerintt;
display(info);
/*获得下一个地址*/
\n\n"
voiddisplay(info)/*显示通信录*/
structaddress*info;
%s\n"
name);
sex);
age);
native);
telephone);
voidsearch()/*搜索一个名字*/
输入查找的名字!
gets(name);
if(!
(info=find(name)))printf("
没有找到!
elsedisplay(info);
voidsave()/*保存通信录*/
FILE*fp;
if((fp=fopen("
mlist"
"
wb"
))==NULL){/*打开文件名mlist如果错误*/
没有找到文件.\n"
exit
(1);
\n正在保存文件...\n"
fwrite(info,sizeof(structaddress),1,fp);
fclose(fp);
voidload()/*打开一个文件*/
structaddress*info,*temp=NULL;
rb"
))==NULL){
打开文件失败...\n"
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 通讯录 制作 数据结构 语言版