资源描述:
《数据结构以文件设计通讯表》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、•设计要求:⑴定义通讯录链表结点结构类型,以txlList和*TxlLink命名,数据域:好友姓名Name、手机号MTel、固定电话Tek邮箱地址Email>籍贯BomAddr、博客名BroadN,指针域:*next;⑵实现创建通讯录链表函数voidBuild(TxlLink&T),输入好友姓名、手机号、固定电话、邮箱地址、籍贯、博客名,建议用文件操作来输入数据;⑶实现函数voidUpdate(TxlLinkT,char*Name,char*MTel),将姓名为Name的好友的手机号改为MTel;⑷实现输出通讯录voidOutPut(TxlLinkT),输岀所有好友的姓名、手机号、
2、固定电话、邮箱地址、籍贯、博客名;(5)实现函数voidInsert(TxlLinkT,char*Name,char*MTel),插入姓名为Name、手机号为MTel的好友信息,将链表中姓名WName的结点放到该结点的前面,将姓名〉Name的结点放到该结点后面;(6)实现函数voidSort(TxlLinkT),将该通讯录按照好友姓名进行非递减排序;(7)实现函数voidMerge(TxlLink&T1,TxlLink&T2),将两个按姓名非递减排序的通讯录合并为一个,姓名相同且手机号相同的好友记录在结果中只保留一个;⑻实现函数intCount(TxlLinkT);统计籍贯是“广州
3、”的好友人数;(9)实现函数voidMoveK(TxlLinkT,intk),将通讯录中倒数第k个结点之后的所有结点移到头结点后面(保持结点间的先后顺序),注意:严禁采用先计算链表长度n再减k(即n・k)的方法;(10)实现函数voidReverseN(TxlLinkT),将通讯录的正川间位置结点之后的全部结点倒置,注意:严禁采用先计算链表长度n再除以2(即n/2)的方法;(11)主控函数main()调用以上函数,分别输出(2)、(3)、(5)、(6)、(7)、(8)、(9)(10)处理后的链表内容、输出籍贯是“广州”的好友人数。#include#include<
4、stdlib.h>#include#defineNewsp(TxlList*)malloc(sizeof(structTxlList))typedefstructTxlList{charName[16];〃姓名charMTel[llJ;〃手机号charTel[9];〃固定电话charEMailfl6];〃邮箱地址charBomAddr[20];//籍贯(值域:”北京“、”上海“、”大连”等等,只写城市名称)charBroadN[50];〃博客名structTxlList*next;//指针域}TxlList,*TxlLink;voidLbuildl(TxlLin
5、kT){〃创建文件FILE*fp;TxlLinkq;q=Newsp;q=T;intNUM;charfilename[20];printf(H请输入要创建的通讯表名:”);gets(filename);if((fp=fopen(filename,nwbn))==NULL){/*以写方式在当前目录打开(新建)文件*/printf("can'topenfile");exit(O);//如果文件无法打开,关闭已经打开的其它文件,结束程序。}printfC*请输入要储存的人数:“);scanf(”%d“,NUM);getchar();for(inta=0;a6、xlLinkp;p=Newsp;printf(u请输入第%4个人的数据,按Enlei•键结束擞据若为空请输“无””,a+1);printf(M姓名:”);gets(p->Name);printf(”手机号:”);gets(p->MTel);printfC*@定电话:“);gets(p->Tel);printf(H邮箱地址:“);gets(p->EMail);printf(”籍贯gets(p->BomAddr);printf(”博客名:“);gets(p->BroadN);q->next=p;q=q->next;if(fprintf(fp,"%s%s%s%s%s%s,',
7、p->Name,p->MTel,p->Tel,p->EMail,p->BomAddr,p->BroadN)==l)〃向文件中一次写一个结构体量值{printf("filewriteerror");break;fclose(fp);voidLbuild2(TxlLink&T){〃读取文件FILE*fp;TxlLinkq;q=Newsp;q=T;charfilename[20J;printf(H请输入要读取的通讯表名:”);gets(filename);if(