bid = input_num_check(0,G.vexnum-1); if(input_exit == 1) { input_exit = 0; system(\ welcome(); return; } do { printf(\请输入需要删除的道路的终点:\ fid = input_num_check(0,G.vexnum-1); if(input_exit == 1) input_exit = 0; else if(G.arcs[bid][fid].distance == MAX || fid == bid) printf(\道路不存在或端点重复!\\n\ else pass = 1; }while(pass != 1); map_de_arc(bid,fid); }while(1); }
void map_re_arc(int bid,int fid,int kind,int xid) { if(G.arcs[bid][fid].distance == MAX) { printf(\无此道路!\ exit(1); } if(kind == 1) //修改长度 { printf(\原始值:%dkm \\n请输入新长度值(km):\ scanf(\.arcs[bid][fid].distance); G.arcs[fid][bid] = G.arcs[bid][fid]; } else if(kind == 2) //修改类型 { printf(\原值:%d 请输入新类型值(0.人行道 1.车行道):\.arcs[bid][fid].kind); scanf(\.arcs[bid][fid].kind); G.arcs[fid][bid] = G.arcs[bid][fid];
25
} else if(kind == 3) //修改终点(道路长度、类型、等级信息直接复制过去) { if(bid == fid || bid == xid || fid == xid) { printf(\错误:起点、旧终点、新终点三者中有两者相同!\\n\ return; } else { G.arcs[bid][xid] = G.arcs[bid][fid]; G.arcs[bid][fid].distance = MAX; G.arcs[fid][bid].distance = MAX; G.arcs[xid][bid] = G.arcs[bid][xid]; } } else { printf(\发生错误!\ exit(1); } save_map(); printf(\修改成功!\\n\}
//删除道路(模块函数)
void map_de_arc(int bid,int fid) { printf(\正在删除道路【%d】【%d】%s...\\n\.vexs[fid].id,G.vexs[fid].name); G.arcs[bid][fid].distance = MAX; G.arcs[fid][bid].distance = MAX; G.arcnum--; save_map(); printf(\删除成功!\\n\}
void search_kh_kh(int kind) {
%s->26
int i,j,c,u; for(c=0;c 27 if(path_kh_vnum[i] //输出前检测 判断较长路径是否完全包含较短路径 int DFS_allpath_kh_test(int a_i,int b_i) //[a_i]:较短路径的i值 [b_i]:较长路径的i值 { int m,i,l_num,s_num,l_road[MAX_V_NUM],s_road[MAX_V_NUM],match=0,first; 28 //赋值两种路径各自的信息 l_num = path_kh_vnum[b_i]; s_num = path_kh_vnum[a_i]; for(m=0;m //寻找两点间所有路径并判断该路径上到道路是否全为要求类型void DFS_allpath_kh(int bid,int fid,int k,int kind) { 29