#includecstdio#includecstdlib#includemalloc.h#includecstring#includectime#includestring#includealgorithm#includeiostreamusingnamespacestd;voidstart();voiddisplay();voiddisplaypaixu();voiddisplayjiansuo();Road*head=NULL;voidSearchByClass(Road*head){time_ta,b;Road*prev,*p,*end,*temp_head;charRun_time[80];inti=0,Class;printf(请输入您所要查找的道路的番号:\n);scanf(%d,&Class);prev=p=(Road*)malloc(sizeof(Road));//创建一个结点a=time(NULL);strftime(Run_time,79,%H:%M:%S,localtime(&a));temp_head=head;if(temp_head==NULL){printf(无数据源);system(pause);exit(5);}while(temp_head!=NULL){if(temp_head-stRoadRec.linkid==Class){end=(Road*)malloc(sizeof(Road));printf(#linkid=%d,temp_head-stRoadRec.LinkID);printf(roadnameflag=%d,temp_head-stRoadRec.roadnameflag);printf(brunch=%d,temp_head-stRoadRec.brunch);printf(dispclass=%d,temp_head-stRoadRec.linkid);printf(roadname=%s#\n,temp_head-stRoadRec.roadname);p-stRoadRec.LinkID=temp_head-stRoadRec.LinkID;p-stRoadRec.roadnameflag=temp_head-stRoadRec.roadnameflag;p-stRoadRec.brunch=temp_head-stRoadRec.brunch;p-stRoadRec.linkid=temp_head-stRoadRec.linkid;p-stRoadRec.roadname=temp_head-stRoadRec.roadname;p-next=end;p=p-next;i++;}temp_head=temp_head-next;}end-next=NULL;p-next=NULL;if(i=5){save(prev);printf(查询结果数大于5,已保存至SearchResult.txt\n);}b=time(NULL);strftime(Run_time,79,%H:%M:%S,localtime(&b));printf(本次查找用时%d秒.\n,b-a);}voidSearchById(Road*head){time_ta,b;Road*prev,*p,*end,*temp_head;charRun_time[80];inti=0,LinkId;printf(请输入您所要查找的道路的ID:\n);scanf(%d,&LinkId);prev=p=(Road*)malloc(sizeof(Road));//创建一个结点a=time(NULL);strftime(Run_time,79,%H:%M:%S,localtime(&a));temp_head=head;if(temp_head==NULL){printf(无数据源);system(pause);exit(3);}while(temp_head!=NULL){if(temp_head-stRoadRec.LinkID==LinkId){end=(Road*)malloc(sizeof(Road));printf(#linkid=%d,temp_head-stRoadRec.LinkID);printf(roadnameflag=%d,temp_head-stRoadRec.roadnameflag);printf(brunch=%d,temp_head-stRoadRec.brunch);printf(dispclass=%d,temp_head-stRoadRec.linkid);printf(roadname=%s#\n,temp_head-stRoadRec.roadname);p-stRoadRec.LinkID=temp_head-stRoadRec.LinkID;p-stRoadRec.roadnameflag=temp_head-stRoadRec.roadnameflag;p-stRoadRec.brunch=temp_head-stRoadRec.brunch;p-stRoadRec.linkid=temp_head-stRoadRec.linkid;p-stRoadRec.roadname=temp_head-stRoadRec.roadname;p-next=end;p=p-next;i++;}temp_head=temp_head-next;}p-next=NULL;if(i=5){save(prev);printf(查询结果数大于5,已保存至SearchResult.txt\n);}b=time(NULL);strftime(Run_time,79,%H:%M:%S,localtime(&b));printf(本次查找用时%d秒.\n,b-a);}voidSearchByName(Road*head){time_ta,b;Road*prev,*p,*end,*temp_head;charRun_time[80];inti=0;charName[30];printf(请输入您所要查找的道路的名称:\n);scanf(%s,Name);prev=p=(Road*)malloc(sizeof(Road));//创建一个结点a=time(NULL);strftime(Run_time,79,%H:%M:%S,localtime(&a));temp_head=head;if(temp_head==NULL){printf(无数据源);system(pause);exit(6);}while(temp_head!=NULL){if(strcmp(temp_head-stRoadRec.roadname,Name)==0){end=(Road*)malloc(sizeof(Road));printf(#linkid=%d,temp_head-stRoadRec.LinkID);printf(roadnameflag=%d,temp_head-stRoadRec.roadnameflag);printf(brunch=%d,temp_head-stRoadRec.brunch);printf(dispclass=%d,temp_head-stRoadRec.linkid);printf(roadname=%s#\n,temp_head-stRoadRec.roadname);p-stRoadRec.LinkID=temp_head-stRoadRec.LinkID;p-stRoadRec.roadnameflag=temp_head-stRoadRec.roadnameflag;p-stRoadRec.brunch=temp_head-stRoadRec.brunch;p-stRoadRec.linkid=temp_head-stRoadRec.linkid;p-stRoadRec.roadname=temp_head-stRoadRec.roadname;p-next=end;p=p-next;i++;}temp_head=temp_head-next;}p-next=NULL;if(i=5){save(prev);printf(查询结果数大于5,已保存至SearchResult.txt\n);}b=time(NULL);strftime(Run_time,79,%H:%M:%S,localtime(&b));printf(本次查找用时%d秒.\n,b-a);}voidupdata(Road*head){FILE*pp;FILE*ppp;FILE*infile;FILE*outfile;time_ta;charfilename[20];Road*p1;Road*p2;pp=fopen(newfile.txt,w);if(pp==NULL){printf(文件创建失败\n);exit(1);}//判断文件是否创建成功//p1=head;if(p1==NULL){printf(空指针\n);}//判断头指针是否为空//while(p1!=NULL){fprintf(pp,%d%d%d%s%d%d,p1-stRoadRec.data_size,p1-stRoadRec.LinkID,p1-stRoadRec.road_size,p1-stRoadRec.roadname,p1-stRoadRec.brunch,p1-stRoadRec.linkid);p1=p1-next;}fclose(pp);//将动态链表中的内容写入文件newfile中//a=time(NULL);strcpy(filename,update.dat);infile=fopen(jilu.txt,w);fscanf(infile,%d%s,&a,&filename);//将时间和update.dat都写入文件中//outfile=fopen(jilu.txt,r);if(outfile==NULL)exit(1);fprintf(outfile,%s,filename);//将文件中的内容读出来作为文件名//fclose(outfile);//将时间加入到文件名中,使更新后之前的文件内容不会被覆盖//ppp=fopen(filename,wb);if(ppp==NULL)printf(更新文件创建失败\n);p2=head;while(p2!=NULL){fwrite(p2,sizeof(Road),1,ppp);p2=p2-next;}printf(文件更新中...\n);printf(文件更新成功\n);fclose(ppp);//文件更新完毕,将排序后的内容写入文本文件和二进制文件中//}voidSearchByBruch(Road*head){time_ta,b;Road*prev,*p,*end,*temp_head;charRun_time[80];inti=0,Bruch;printf(请输入您所要查找的道路的岔路数:\n);scanf(%d,&Bruch);p=(Road*)malloc(sizeof(Road));//创建一个结点prev=p;a=time(NULL);strftime(Run_time,79,%H:%M:%S,localtime(&a));temp_head=head;if(temp_head==NULL){printf(无数据源);system(pause);exit(4);}while(temp_head!=NULL){if(temp_head-stRoadRec.brunch==Bruch){end=(Road*)malloc(sizeof(Road));printf(#linkid=