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

<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;
}

运行结果:

数据结构课程设计——校园导航系统开发_第1张图片

你可能感兴趣的:(数据结构课程设计——校园导航系统开发)