① 用〈〈数据结构〉〉中的双向链表作数据结构,结合c语言基本知识。编写一个通讯录管理系统。
/*
目的:
用〈〈数据结构〉〉中的双向链表作数据结构,结合C语言基本知识。编写一个通讯录管理系统。
功能:
1)输入信息——enter();
2)显示信息———display();
3)查找以姓名作为关键字———search();
4)删除信息———delete();
5)存盘———save();
6)装入———load();
时间:
2017年7月20日09:50:14
版本:
1.0
环境:
gcc7.1
*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#definemaxNameLength12
#definemaxAddrLength16
#definemaxPhoneLength12
#definemaxCacheLength64
///////////////////////////////////////////////////////////////////////////////////////
typedefstructperson
{
charname[maxNameLength];
charaddress[maxAddrLength];
charphone[maxPhoneLength];
structperson*prior,*next;
}singlePerson;
typedefstructaddressList
{
singlePerson*head;
intlength;
}addressList;
//////////////////////////////////////////////////////////////////////////////////////
voidinitialization(addressList&record);
intgetCommand(void);
voidhelp(void);
voiseradd(addressList&record);
voiddisplay(constaddressList&record);
voidshowSingle(singlePerson*elem);
voiserdel(addressList&record);
voidsearch(constaddressList&record);
voidsave(constaddressList&record);
voidload(addressList&record);
/////////////////////////////////////////////////////////////////////////////////////
intmain(void)
{
intengine=1;
addressListrecord;
initialization(record);
while(engine!=-1)
{
fflush(stdin);
printf("[entercommand]#");
engine=getCommand();
switch(engine)
{
case0:
help();
break;
case1:
useradd(record);
break;
case2:
display(record);
break;
case3:
search(record);
break;
case4:
userdel(record);
break;
case5:
save(record);
break;
case6:
load(record);
break;
case-1:
break;
case100:
break;
case500:
printf("NOsuchcommand ");
break;
default:
printf("Error ");
}
}
return0;
}
/////////////////////////////////////////////////////////////////////////////////////
voidinitialization(addressList&record)
{
record.head=NULL;
record.length=0;
}
intgetCommand(void)
{
char*cache=(char*)malloc(maxCacheLength*sizeof(char));
chartemp=getchar();
intlocation=0;
while(temp==''||temp==' ')
temp=getchar();
while(temp!=''&&temp!=' '&&temp!=' ')
{
*(cache+location++)=temp;
temp=getchar();
}
*(cache+location)='