1. 设计河北师范大学的校园平面图,至少包括15个以上的地点,每两个地点间可以有不同的路,且路长可能不同。以图中顶点表示校内各地点,存放名称、代号、简介等信息;用边表示路径,存放路径长度等相关信息。

2.提供图中任意地点相关信息的查询。

  1. 提供图中任意地点的问路查询,即查询任意两个地点之间的一条最短路径。

  2. 学校要新建一间超市,请为超市选址,实现总体最优。注意要考虑各地点距离超市的远近,以及大家去超市的频度不同。

#include <stdlib.h>
#include <stdio.h>
#define N 16 //图的顶点的数量typedef struct place{char* name;//名称int codename;//代号char* introduction;//简介double frequncy;//去超市的频率
}place,mall;//创建地点
//place---buildingstypedef struct path{int length;char pathName[10];int start;//开始节点的坐标int finish;int turn[N];int index;
}path;typedef struct Map{//  place p[N+1];//顶点的类型path arcs[N+1][N+1];//distance from one to anotherint vernum,arcnum;}Map;//给图加入路径长度
void initMap(Map *mapp,int distance,int start,int finish){mapp->arcs[start][finish].length=distance;mapp->arcs[finish][start].length=distance;
}
void initplace(place *p,int codename,char name[10],char introduction[100],double fre){p->name=name;p->codename=codename;p->introduction=introduction;p->frequncy=fre;
}void initfrequency(place *p,double e){p->frequncy=e;
}
void printMap(Map p){printf("the Adjacency matrix is as follows");int i,j;for(i=0;i<p.vernum;i++){for(j=0;j<p.vernum;j++){//遍历以上的二维矩阵if(p.arcs[i][j].length==-1){printf("#\t");}else{printf("%d\t",p.arcs[i][j]);}}printf("\n");}printf("The adjacency matrix is printed successfully\n");printf("the num of paths in the map is %d \n",p.arcnum);printf("the num of places in this map is %d\n",p.vernum);
}
// mappp.arcs[k][j]是最原始的邻接矩阵
void flody(Map mappp,int newmap[N][N])
{int k, i, j;for (k = 1; k <= N; k++)//在n个结点中依次找中转站;{for (i = 1; i <= N; i++){for (j = 1; j <= N; j++){newmap[i][j]=mappp.arcs[i][j].length;if(mappp.arcs[i][k].length <1000&& mappp.arcs[k][j].length<1000){//如果中转点存在if (mappp.arcs[i][j].length > mappp.arcs[i][k].length + mappp.arcs[k][j].length)//如果直接从i到j的距离大于从i到k再到j的距离,即找到一个合适的中转站,就更新地图;{mappp.arcs[i][j].length = mappp.arcs[i][k].length + mappp.arcs[k][j].length;newmap[i][j]=mappp.arcs[i][j].length;}}}}}//对角线元素是0for (int i=1; i<=N; i++){for (int k=1; k<=N; k++){if (i==k){newmap[i][k]=0;}}}}int main()
{//4-------4double weigh;double minpp;int mallp;int mall,dis,start4;double w[N+1];//4-----------4//1-----------------1int i,start,finish;double j;place placep[N+1];//1----------------------1int placenum;//3-------------------3int newmap[N][N];int minp,minum,cnt,f;int n;int startp,finishp,turn; int pathp[N];//1.设计平面图//1.1创建地点的结点//各个地点的信息组成的数组//initplace(placep[1],1,'qizhi1','grilshome');initplace(placep[2],2,'qizhi2','girlshome');initplace(placep[3],3,'qizhi3','girlshome');for(i=1;i<=N;i++){j=0.0;initplace(&placep[i],i,"name","introduction",j);}Map mapp;//邻接矩阵的初始化操作for(start=1;start<=N;start++){for(finish=1;finish<=N;finish++){mapp.arcs[start][finish].length=-1;}}for(i=1;i<=N;i++){for(j=1;j<=N;j++){initMap(&mapp,0x3f3f3f3f,i,j);}}//1.2创建路径initMap(&mapp,6,1,9);initMap( &mapp,7,9,15);initMap( &mapp,4,1,8);initMap(&mapp,1,7,8);initMap( &mapp,4,7,11);initMap(&mapp,2,7,12);initMap(&mapp,6,1,6);initMap(  &mapp,1,1,2);initMap(&mapp,3,2,3);initMap( &mapp,2,3,5);initMap(&mapp,4,3,4);initMap( &mapp,2,5,13);initMap(&mapp,6,4,14);initMap(&mapp,4,4,10);initMap(&mapp,1,10,14);initMap(&mapp,6,9,1);initMap( &mapp,7,15,9);initMap( &mapp,4,8,1);initMap(&mapp,1,8,7);initMap( &mapp,4,11,7);initMap(&mapp,2,12,7);initMap(&mapp,6,6,1);initMap(  &mapp,1,2,1);initMap(&mapp,3,3,2);initMap( &mapp,2,5,3);initMap(&mapp,4,4,3);initMap( &mapp,2,13,5);initMap(&mapp,6,14,4);initMap(&mapp,4,10,4);initMap(&mapp,1,14,10);initMap(&mapp,6,1,16);initMap(&mapp,6,16,1);
//    2.1 相关信息的查询操作printf("现在进入查询,请输入想要查询的地址代号,(输入范围是%d~%d)\n",1,N);scanf("%d",&placenum);printf("您查询的地点代号是%d,名称是%s,简介是%s,去超市的频率是%f",placep[placenum].codename,placep[placenum].name,placep[placenum].introduction,placep[placenum].frequncy);//3.1问路查询printf("现在进入问路查询界面,请您按照2 4的形式输入起点和终点的地址代号 (输入范围是%d~%d)比如4 14\n",1,N);//输入1、 2、 3 ~ N之类的代号flody(mapp,newmap);//存放最短路径turn=0;n=N;while(n){pathp[n--]=0;}scanf("%d %d",&startp,&finishp);printf("从地点%d到地点%d的最短路径为%d\n",startp,finishp,newmap[startp][finishp]);printf("路径如下所示:\n");minp=100;//寻找最短路,先假设这条路径长度最大,经过每一个点后更新长度,最后长度等于最短路minum;cnt=2;f=startp;//f是已经确定的最短路经过的点,在f的邻接点中找到点minum,使得newmap[first][f]+map[f][minum]+newmap[minnum][last]=最短路while(minp>=newmap[startp][finishp]){for (i=1;i<=N;i++){if ((newmap[startp][f]+mapp.arcs[f][i].length+newmap[i][finishp])<=minp){minum=i;minp=newmap[startp][f]+mapp.arcs[f][minum].length+newmap[minum][finishp];}}f=minum;pathp[cnt++]=minum;if (minum==finishp){break;}}printf("%d ",startp);pathp[cnt]=finishp;for(i=1; i<cnt; i++){if (pathp[i]!=pathp[i-1] && pathp[i]!=0){printf("%d ",pathp[i]);}}printf("\n");//    printf("%d\n",mapp.arcs[startp][finishp].index);
//    printf("%d\n",mapp.arcs[startp][finishp].turn[mapp.arcs[startp][finishp].index]);
//    if(mapp.arcs[startp][finishp].turn[mapp.arcs[startp][finishp].index]!=0)//当有中转点的时候
//    {//        printf("%d-->",startp);
//        for(int i=1; i<mapp.arcs[startp][finishp].index; i++)
//        {//            printf("%d",mapp.arcs[i][finishp].turn[mapp.arcs[i][finishp].index]);
//            if( i<=mapp.arcs[startp][finishp].index ) printf("-->");
//
//        }
//        printf("%d",finishp);
//    }
//    else{//        printf("%d-->%d",startp,finishp);
//    }
//    printf("\n");//之前写的place placep[N+1];//各个地点的信息组成的数组//4.1超市选址initfrequency(&placep[6],0.9);initfrequency(&placep[2],0.1);for(mall=1;mall<=N;mall++){w[mall]=0;};for(mall=1;mall<=N;mall++){weigh=0;//mall是新超市的所在建筑的代号for(start4=1;start4<=N;start4++){dis=newmap[start4][mall];if(start4==mall) dis=0;weigh+=dis*placep[start4].frequncy;
//                printf("%lf %d %d %lf\n",placep[start].frequncy,mall,dis,weigh);}w[mall]=weigh;// printf("%lf\n",w[mall]);}mallp=1;minpp=w[mallp];for(int i=1;i<=N;i++){if(minpp>w[i]){minpp=w[i];mallp=i;}}
printf("超市建在代号为%d的位置最好",mallp);system("pause");return 0;}

数据结构超市选址、最短路径查询、地址信息查询相关推荐

  1. 中间件——利用Axis 2 进行Web service开发(中英文双向翻译,中国邮政编码--地址信息查询)

    问题描述: 1.利用Java Swing 或SWT 开发一桌面应用程序 2.应用程序中集成以下网站提供的的Web服务:http://www.webxml.com.cn/zh_cn/web_servic ...

  2. ip地址信息查询入口,附key

    分享一个查询ip地址信息的接口 http://apis.haoservice.com/lifeservice/queryIpAddr?ip=60.12.8.29&key=047c10b650e ...

  3. java m查询_信息查询系统,基于SSM框架的JAVA系统

    今天和一个朋友共同完成了一个信息查询系统项目,我们在开发时选用的框架是SSM(MYECLIPSE)框架.我这个朋友知识有限,只会这个框架,哈哈,都是为了方便他.和往常一样选用简单又便捷的MYECLIP ...

  4. 99 网络编程_传统网络工程师如何利用python实现公司内网IP地址信息查询?

      网   工   圈 网络工程师阿龙圈内最早的公益公众号,本号已认证!学网络关注我一个就够了(关注近5w+)关注听说99%的网工都来这里充电吖关注我,一个老HCIE(编号3558)带你轻松玩网络技术 ...

  5. mac地址信息查询站点

    局域网内网收***~查ip,查mac,找元凶 一.常见mac地址厂商: 00-15-5D开头-------Hyper-V虚拟机 00-0C-29开头-------VMWare WorkStation虚 ...

  6. 根据ip地址查询地址信息

    用的是http://ip.taobao.com/service/getIpInfo.php接口. 这个也是网上找的,但是我已经修改测试过了,是可用的,在这里先感谢原作者. package com.ro ...

  7. 计算机查询硬盘信息,查询电脑硬件信息的方法

    电脑硬件,包括电脑中所有物理的零件,以此来区分它所包括或执行的数据和为硬件提供指令以完成任务的软件. 电脑硬件主要包含:机箱,主板,总线,电源,硬盘,存储控制器,界面卡,可携储存装置,内置存储器,输入 ...

  8. mysql查询个人信息查询_MySQL:基础查询

    MySql:基础查询 语法: SELECT 要查询的东西 [FROM 表名]; 类似于Java中 :System.out.println(要打印的东西); 特点: ①通过select查询完的结果 ,是 ...

  9. iPhone 信息查询汇总 [搬运]

    信息 地址 可降级版本 http://api.ineal.me/tss/status 爱思助手 微信小程序 "iOS降级查询" 设备信息查询 https://www.theipho ...

最新文章

  1. 从零到百亿级,揭秘科大讯飞广告平台架构演进之路
  2. 数据预处理+缺失值处理方案+Missing Value+pandas+缺失值填充方法、方案
  3. Liferay 集群 (fail-over)
  4. python工作太难找-Python工作难找吗?
  5. 线性代数第五版吉尔伯特课后答_线性代数同济第五版第四章课后习题答案!
  6. 使用DBLink方式同步远程数据库中含Blob、Clob字段表的问题解决
  7. ux设计中的各种地图_如何在UX设计中使用颜色
  8. AngularJS的学习笔记(二)
  9. swfit-学习笔记(数组的使用)
  10. mysql怎么访问网页版_mysql在本地已经启动,但是在网页上不能直接访问的解决...
  11. Oracle 中国研发中心裁员已成定局,云时代下一个是谁?
  12. 数据结构 红黑树(RBTree)的原理与实现
  13. logback日志pattern_003、Spring Boot使用slf4j进行日志记录
  14. 利用T-SQL处理SQL Server数据库表中的重复行
  15. python21天打卡day3
  16. HDU2019 数列有序!【入门】
  17. JDK-Logger
  18. java的return用法
  19. linux抓包工具分析工具下载,Linux下抓包工具tcpdump以及分析包的工具wireshark
  20. android 8原生系统下载地址,android8.0下载地址 android8.0系统下载网址

热门文章

  1. Python :爬取人民日报新闻
  2. RFID天线 基础知识
  3. Exchange信箱迁移(只适用于DC和exh不在同一服务器上)
  4. 美团小程序怎么弄 饿了么cps推广 外卖cps小程序源码 饿了么cps平台 外卖领券小程序源码 美团cps分销源码免费领取 外卖红包小程序cps 饿了么cps分销免费源码 饿了么外卖分佣小程序 ——
  5. QAQ……#define INF 0x3f3f3f3f 原来是定义成无穷大
  6. MySQL_分页查询公式
  7. 含有运算放大器的电路分析
  8. 含文档+PPT+源码等]精品基于Uniapp+Springboot实现的Android的学习生活交流APP[包运行成功]Nodejs毕业设计计算机项目源码
  9. 聊一聊程序员行业关于未来的那些事
  10. Mac系统清理软件有必要安装CleanMyMac吗 Mac电脑怎么彻底清理卸载的软件