您的位置:首页 > 理论基础 > 数据结构算法

数据结构课程设计——校园导航系统开发

2015-12-30 08:51 696 查看
<span style="font-family: Arial, Helvetica, sans-serif; font-size: 12px;">/********************************************</span>
*版权所有 (C)2015,zhengzhaohan
*
*文件名称:data.h
*文件标识:无
*内容摘要:该代码用于定义烟台大学校园各点间的权值
*其他说明:无
*当前版本:V1.0
*作者:郑兆涵
*完成日期:2015.12.23
********************************************/

int A[57][57]=
{
{0,150,INF,170,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,300,200,INF,INF,INF,INF,INF,INF},//1

{150,0,30,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,30,INF,10,20,20,INF,INF},//2

{INF,30,0,INF,50,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//3

{170,INF,INF,0,10,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//4

{INF,INF,50,10,0,10,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//5

{INF,INF,INF,INF,10,0,10,INF,INF,15,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//6

{INF,INF,INF,INF,INF,10,0,INF,20,15,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//7

{INF,INF,INF,INF,INF,INF,INF,0,10,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//8

{INF,INF,INF,INF,INF,INF,20,10,0,15,10,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//9

{INF,INF,INF,INF,INF,15,15,INF,15,0,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//10

{INF,INF,INF,INF,INF,INF,INF,INF,10,INF,0,10,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//11

{INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,10,0,30,20,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//12

{INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,30,0,20,INF,80,90,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//13

{INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,20,20,0,10,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//14

{INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,10,0,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,20,40,INF,INF,INF,30,INF,INF,INF,INF,INF,INF,30,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,50,INF,INF,15},//15

{INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,80,INF,INF,0,100,30,INF,40,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//16

{INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,90,INF,INF,100,0,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//17

{INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,30,INF,0,60,40,INF,INF,INF,INF,INF,INF,INF,INF,INF,20,20,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//18

{INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,60,0,30,20,40,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//19

{INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,40,INF,40,30,0,20,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//20

{INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,20,20,0,10,INF,INF,INF,70,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//21

{INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,40,INF,10,0,10,INF,INF,60,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//22

{INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,10,0,30,INF,50,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//23

{INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,30,0,20,160,INF,INF,INF,INF,INF,INF,INF,190,INF,INF,510,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//24

{INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,20,0,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,500,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//25

{INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,70,60,50,160,INF,0,10,INF,INF,INF,INF,INF,20,40,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//26

{INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,10,0,30,INF,INF,INF,INF,15,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//27

{INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,30,0,10,INF,INF,INF,30,INF,25,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//28

{INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,10,0,20,INF,20,INF,INF,35,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//29

{INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,20,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,20,0,10,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//30

{INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,20,INF,INF,20,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,10,0,10,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//31

{INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,40,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,20,INF,10,0,INF,INF,80,20,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//32

{INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,20,15,30,INF,INF,INF,INF,0,INF,15,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//33

{INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,190,INF,40,INF,INF,INF,INF,INF,INF,INF,0,20,INF,120,100,50,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//34

{INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,25,35,INF,INF,80,15,20,0,30,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//35

{INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,30,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,20,INF,INF,30,0,INF,INF,110,100,20,30,30,100,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//36

{INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,510,500,INF,INF,INF,INF,INF,INF,INF,INF,120,INF,INF,0,20,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//37

{INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,100,INF,INF,20,0,30,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//38

{INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,50,INF,110,INF,30,0,30,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//39

{INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,100,INF,INF,30,0,20,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//40

{INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,20,INF,INF,INF,20,0,10,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//41

{INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,30,INF,INF,INF,INF,10,0,INF,10,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//42

{INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,30,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,30,INF,INF,INF,INF,INF,INF,0,INF,30,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF},//43

{INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,100,INF,INF,INF,INF,INF,10,INF,0,20,100,INF,150,INF,INF,INF,INF,INF,INF,INF,INF,INF},//44

{INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,30,20,0,100,INF,30,20,INF,INF,15,INF,INF,INF,INF,INF},//45

{INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,100,100,0,20,10,INF,INF,INF,INF,INF,INF,INF,INF,INF},//46

{INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,20,0,20,INF,INF,INF,INF,INF,INF,INF,INF,INF},//47

{INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,150,30,10,20,0,30,50,INF,INF,INF,INF,INF,INF,INF},//48

{INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,20,INF,INF,30,0,20,INF,INF,INF,INF,INF,INF,INF},//49

{300,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,50,20,0,30,INF,INF,INF,INF,INF,INF},//50

{200,30,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,30,0,30,30,INF,INF,INF,INF},//51

{INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,15,INF,INF,INF,INF,INF,30,0,10,INF,INF,INF,INF},//52

{INF,10,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,30,10,0,INF,INF,INF,INF},//53

{INF,20,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,50,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,0,INF,INF,INF},//54

{INF,20,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,0,30,INF},//55

{INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,30,0,40},//56

{INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,15,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,INF,40,0}//57
};


/********************************************
*版权所有 (C)2015,zhengzhaohan
*
*文件名称:graph.h
*文件标识:无
*内容摘要:该代码包含定义图数据结构的代码、宏定义、要实现算法的函数的声明
*其他说明:(1)功能:由一个反映图中顶点邻接关系的二维数组,构造出用邻接矩阵存储的图
(2)参数:Arr - 数组名,由于形式参数为二维数组时必须给出每行的元素个数,在此将参数Arr声明为一维数组名(指向int的指针)
(3) n - 矩阵的阶数
(4) g - 要构造出来的邻接矩阵数据结构
*当前版本:V1.0
*作者:郑兆涵
*完成日期:2015.12.23
********************************************/

#ifndef GRAPH_H_INCLUDED
#define GRAPH_H_INCLUDED
#define MAXV 100 //最大顶点个数
#define INF 32767 //INF表示∞
typedef int InfoType;

//定义邻接矩阵类型
typedef struct
{
int no; //顶点编号
InfoType info; //顶点其他信息,在此存放带权图权值
} VertexType; //顶点类型

typedef struct //图的定义
{
int edges[MAXV][MAXV]; //邻接矩阵
int n,e; //顶点数,弧数
VertexType vexs[MAXV]; //存放顶点信息
} MGraph; //图的邻接矩阵类型
void ArrayToMat(int *Arr, int n, MGraph &g); //用普通数组构造图的邻接矩阵
#endif // GRAPH_H_INCLUDED

/********************************************
*版权所有 (C)2015,zhengzhaohan
*
*文件名称:point.h
*文件标识:无
*内容摘要:该代码用于定义烟台大学校园各点名称
*其他说明:无
*当前版本:V1.0
*作者:郑兆涵
*完成日期:2015.12.23
********************************************/

char *vertice_name[57] = { //烟台大学地图地图
"南门","综合楼","逸夫图书馆","海洋学院","法学院","外国语学院","数学与信息科学学院","药学院","九龙广场",
"实训中心","环境与材料工程学院","机电汽车工程学院","办公楼","文科馆","三元湖","1#、2#、3#教","西门","承先图书馆","八景园",
"计算机中心","二餐九餐","一餐","四餐五餐","教师公寓","北门","1#、2#、3#、4#、5#学生公寓","青春广场","生命科学学院","化学学院",
"光电学院","钟楼","计算机学院","三餐","小树林","土木工程学院","4#、5#、6#、7#教","东门","公安处","六餐","6#、7#、8#、9#学生公寓",
"篮球(网球)场","排球场","新足球场","国防生训练场","篮球(手球)场","10#学生公寓","11#、12#、13#、14#学生公寓","七餐",
"停车场","大学生活动中心","建筑馆","体育学院","体院运动场","体校","八餐","国际交流学院","育秀大楼"
};

/********************************************
*版权所有 (C)2015,zhengzhaohan
*
*文件名称:graph.cpp
*文件标识:无
*内容摘要:该代码包含实现各种算法的函数的定义,主要进行弗洛伊德算法的实现
*其他说明:(1)功能:由一个反映图中顶点邻接关系的二维数组,构造出用邻接矩阵存储的图
(2)参数:Arr - 数组名,由于形式参数为二维数组时必须给出每行的元素个数,在此将参数Arr声明为一维数组名(指向int的指针)
(3)      n - 矩阵的阶数
(4)	  g - 要构造出来的邻接矩阵数据结构
*当前版本:V1.0
*作者:郑兆涵
*完成日期:2015.12.23
********************************************/
#include <stdio.h>
#include <malloc.h>
#include "graph.h"
void ArrayToMat(int *Arr, int n, MGraph &g)
{
int i,j,count=0;  //count用于统计边数,即矩阵中非0元素个数
g.n=n;
for (i=0; i<g.n; i++)
for (j=0; j<g.n; j++)
{
g.edges[i][j]=Arr[i*n+j]; //将Arr看作n×n的二维数组,Arr[i*n+j]即是Arr[i][j],计算存储位置的功夫在此应用
if(g.edges[i][j]!=0)
count++;
}
g.e=count;
}

/********************************************
*版权所有 (C)2015,zhengzhaohan
*
*文件名称:daohang.cpp
*文件标识:无
*内容摘要:该代码主要是实现整个项目的运行功能
*其他说明:(1)该代码包含头文件<data.h>、<graph.h>、<point.h>以及<graph.cpp>源文件
(2)该代码主要实现用户登录界面、输入查询点、路线输出以及路线的文件存读
*当前版本:V1.0
*作者:郑兆涵
*完成日期:2015.12.23
********************************************/

#include <stdio.h>
#include <malloc.h>
#include <cstring>
#include <string.h>
#include "graph.h"
#include "data.h"
#include "point.h"
#define MaxSize 100
char string1[100], string2[100],address1[100],address2[100]; //string1[100] 定义输入的起始点,string2[100] 定义输入的终止点,address1[100] 定义起始点的转化(如"一教"转化为"1#,2#,3#教"等),address2[100] 定义终止点的转化(如"二教"转化为"1#,2#,3#教"等)
char ppp[500];											     //文件读存字符串
int c1=0,c2=0;                                               // ccc()函数中的输入点

/********************************************
*功能描述:Ppath()函数用于递归查找路径上的顶点
*参数:i,j,k
*返回值:无
*其他说明:无
********************************************/
void Ppath(int path[][MAXV],int i,int j)
{
int k;
k=path[i][j];
if (k==-1) return;  //到了起点则返回
Ppath(path,i,k);    //顶点i的前一个顶点k
printf("%s -> ",vertice_name[k]); //改 printf("%d,",k);
strcat(ppp,vertice_name[k]);
strcat(ppp," -> ");
Ppath(path,k,j);    //顶点k的前一个顶点j
}

/********************************************
*功能描述:图的遍历及输出,以及文件的写入,通过将start和end所表示的起始点和终止点的两个所位于矩阵中下角标的数值,传递给该Dispath()函数
*参数:n=57,start,end
*返回值:无
*其他说明:该函数涉及到文件的存储问题
********************************************/
void Dispath(int A[][MAXV],int path[][MAXV],int n, int start, int end)
{
int i,j;
for (i=0; i<n; i++)
for (j=0; j<n; j++)
{
if (i==start&&j==end)
if (A[i][j]==INF)
{
if (i!=j)
printf("从%s到%s没有路径\n", vertice_name[i], vertice_name[j]); //改 printf("从%d到%d没有路径\n",i,j);
}
else
{
printf("从%s到%s路线长度约为 : %d米 \n所走路线为 : ",string1 , string2, A[i][j]); //改 printf("  从%d到%d=>路径长度:%d 路径:",i,j,A[i][j]);
strcat(ppp,"从");
strcat(ppp,string1);
strcat(ppp,"到");
strcat(ppp,string2);
strcat(ppp,"路线长度约为 : ");
char s[10];
int t=A[i][j];
int k=0;
if(t)
{
while(t)
{
s[k++]=t%10+'0';
t/=10;
}
}
else
{
s[k++]='0';
}
s[k]=0;
strrev(s);
strcat(ppp,s);
strcat(ppp,"米 \n所走路线为 : ");
printf("%s -> ", string1); //改 printf("%d,",i);    //输出路径上的起点
strcat(ppp,string1);
strcat(ppp," -> ");
Ppath(path,i,j);    //输出路径上的中间点
printf("%s\n", string2); //改 printf("%d\n",j);   //输出路径上的终点
strcat(ppp,string2);
strcat(ppp,"\n");
}
}
}

/********************************************
*功能描述:输出最短路径
*参数:g,start,end
*返回值:将所得到的值,调用Dispath函数,进行最短路径的输出
*其他说明:无
********************************************/
void Floyd(MGraph g, int start, int end)
{
int A[MAXV][MAXV],path[MAXV][MAXV];
int i,j,k;
for (i=0; i<g.n; i++)
for (j=0; j<g.n; j++)
{
A[i][j]=g.edges[i][j];
path[i][j]=-1;
}
for (k=0; k<g.n; k++)
{
for (i=0; i<g.n; i++)
for (j=0; j<g.n; j++)
if (A[i][j]>A[i][k]+A[k][j])
{
A[i][j]=A[i][k]+A[k][j];
path[i][j]=k;
}
}
Dispath(A,path,g.n,start,end);   //输出最短路径
}

/********************************************
*功能描述:进行起始点和终止点的特殊判断并转化点
*参数:address1,address2,string1,string2
*返回值:将所得到的值通过address1和address2进行传递到Dispath()函数进行调用。
*其他说明:主要是通过运用strcmp的包含关系,进行点的转化
********************************************/
void str()
{
if((strcmp(string1,"一教")==0)||(strcmp(string1,"二教")==0)||(strcmp(string1,"三教")==0))
{
strcpy(address1,"1#、2#、3#教");
}
else if((strcmp(string1,"二餐")==0)||(strcmp(string1,"九餐")==0))
{
strcpy(address1,"二餐九餐");
}
else if((strcmp(string1,"四餐")==0)||(strcmp(string1,"五餐")==0))
{
strcpy(address1,"四餐五餐");
}
else if((strcmp(string1,"四教")==0)||(strcmp(string1,"五教")==0)||(strcmp(string1,"六教")==0)||(strcmp(string1,"七教")==0))
{
strcpy(address1,"4#、5#、6#、7#教");
}
else if((strcmp(string1,"1#学生公寓")==0)||(strcmp(string1,"2#学生公寓")==0)||(strcmp(string1,"3#学生公寓")==0)||(strcmp(string1,"4#学生公寓")==0)||(strcmp(string1,"5#学生公寓")==0))
{
strcpy(address1,"1#、2#、3#、4#、5#学生公寓");
}
else if((strcmp(string1,"6#学生公寓")==0)||(strcmp(string1,"7#学生公寓")==0)||(strcmp(string1,"8#学生公寓")==0)||(strcmp(string1,"9#学生公寓")==0))
{
strcpy(address1,"6#、7#、8#、9#学生公寓");
}
else if((strcmp(string1,"11#学生公寓")==0)||(strcmp(string1,"12#学生公寓")==0)||(strcmp(string1,"13#学生公寓")==0)||(strcmp(string1,"14#学生公寓")==0))
{
strcpy(address1,"11#、12#、13#、14#学生公寓");
}
else
{
strcpy(address1,string1);
}

if((strcmp(string2,"一教")==0)||(strcmp(string2,"二教")==0)||(strcmp(string2,"三教")==0))
{
strcpy(address2,"1#、2#、3#教");
}
else if((strcmp(string2,"二餐")==0)||(strcmp(string2,"九餐")==0))
{
strcpy(address2,"二餐九餐");
}
else if((strcmp(string2,"四餐")==0)||(strcmp(string2,"五餐")==0))
{
strcpy(address2,"四餐五餐");
}
else if((strcmp(string2,"四教")==0)||(strcmp(string2,"五教")==0)||(strcmp(string2,"六教")==0)||(strcmp(string2,"七教")==0))
{
strcpy(address2,"4#、5#、6#、7#教");
}
else if((strcmp(string2,"1#学生公寓")==0)||(strcmp(string2,"2#学生公寓")==0)||(strcmp(string2,"3#学生公寓")==0)||(strcmp(string2,"4#学生公寓")==0)||(strcmp(string2,"5#学生公寓")==0))
{
strcpy(address2,"1#、2#、3#、4#、5#学生公寓");
}
else if((strcmp(string2,"6#学生公寓")==0)||(strcmp(string2,"7#学生公寓")==0)||(strcmp(string2,"8#学生公寓")==0)||(strcmp(string2,"9#学生公寓")==0))
{
strcpy(address2,"6#、7#、8#、9#学生公寓");
}
else if((strcmp(string2,"11#学生公寓")==0)||(strcmp(string2,"12#学生公寓")==0)||(strcmp(string2,"13#学生公寓")==0)||(strcmp(string2,"14#学生公寓")==0))
{
strcpy(address2,"11#、12#、13#、14#学生公寓");
}
else
{
strcpy(address2,string2);
}
}

/********************************************
*功能描述:判断查找起始点和终止点是否输入有误
*参数:start,end,address1,address2,
*返回值:0-成功,1-失败
*其他说明:start和end是矩阵中元素的位置,address1和address2是需要判断的元素的名称
********************************************/
int find()
{
MGraph g;
int start=0,end=0,flag=0,i=0,j=0;
while(j<57) //进行判断输入点错误情况
{
if(strcmp(vertice_name[j],address1)==0)
{
start=j;
if(flag==0)
{
while(i<57)
{
if(strcmp(vertice_name[i],address2)==0)
{
end=i;
ArrayToMat(A[0],57, g);
Floyd(g, start, end);
return 1;
}
i++;
}
printf("输入终止点错误!");
printf("\n");
return 0;
}
}
else
{
j++;
if(j == 57 )
{
while(i<57)
{
if(strcmp(vertice_name[i],address2)==0)
{
printf("输入起始点错误!\n");
return 0;
}
i++;
}
printf("输入起始点和终止点均错误!");
printf("\n");
return 0;
}
}
}
}

/********************************************
*功能描述:文件读存
*参数:string1,string2
*返回值:true-成功,false-失败
*其他说明:通过存入三行数据,并进行判断和调用,所定的点为起始点和终止点,当可判断到两点时,直接从文档中读取数据到dos界面上
********************************************/
bool PathSaved()
{
FILE *fp=fopen("line.txt","r+");
if(fp==NULL)
{
return false;
}
char t[100]= {0};
strcat(t,string1);
strcat(t," ");
strcat(t,string2);
strcat(t,"\n");
char t2[500];
while(fgets(t2,500,fp))
{
if(strcmp(t2,t)==0)
{
fgets(ppp,500,fp);
fgets(t2,500,fp);
strcat(ppp,t2);
fclose(fp);
return true;
}
else
{
fgets(t2,500,fp);
fgets(t2,500,fp);
}
}
fclose(fp);
return false;
}

/********************************************
*功能描述:文件读存
*参数:c1,c2,string1,string2
*返回值:无
*其他说明:该函数总的调用了文件读写操作
********************************************/
void ccc() //文件读写保存
{
if(c1==1)
{
printf("请输入起始点和终止点\n");
scanf("%s %s", string1, string2);   //start=? end=? 查找其在vertice_name数组中的位置
if(!PathSaved())
{
str();
int k=find();
if(k)
{
FILE *fp=fopen("line.txt","a");
if(fp==NULL)
{
fp=fopen("line.txt","w");
}
fprintf(fp,"%s %s\n%s",string1,string2,ppp);
fclose(fp);
}
}
else
{
printf("%s",ppp);
}
printf("\n1.继续查找  2.退出登录\n");
scanf("%d",&c2);
switch(c2)
{
case 1:
ccc();
break;
case 2:
printf("谢谢使用!\n");
break;
}
}
if(c1==2)
{
printf("谢谢使用!\n");
}
}

/********************************************
*功能描述:登录图标
*参数:
*返回值:无
*其他说明:
********************************************/
void welcome() //登录图标
{
printf("■■■■■■■■■■■■■■■■■■■■  \n");
printf("■                                    ■  \n");
printf("■  ■■■■■■■■■■■■■■■■  ■  \n");
printf("■  ■欢迎来到烟台大学校园导航系统■  ■  \n");
printf("■  ■■■■■■■■■■■■■■■■  ■  \n");
printf("■                                    ■  \n");
printf("■■■■■■■■■■■■■■■■■■■■  \n");
printf("\n");
for(int i=0;i<500000000;i++){}
printf("请输入您的选择:\n");
printf("1.查询校园路线   2.退出登录\n");
scanf("%d",&c1);
}

int main()  //主函数,实现功能
{
welcome();
ccc();
return 0;
}


运行结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: