校园导航问题(数据结构课设)(C语言版)

        本文为数据结构与算法课设--《校园导航问题》课题的一个分享。采用图的结构进行存储数据和计算带权路线。

目录

1.设计内容与要求

2.程序调试

3.代码实现

1.结构体与数据初始化

2. 地图查看与显示

3.起始点输入和最短路径查找

4.邻接矩阵的输出

*5.完整代码

4.问题反思与总结


1.设计内容与要求

设计内容:

(1)设计学校的平面图(至少包括10个以上的场所)。每两个场所间可以有不同的路径,且路长也可能不同(图形结构要求通过键盘输入数据后采用创建图的算法生成图形);

(2)提供起始点与终点能自动找出从任意场所到达另一场所的最佳路径(最短路径,要求采用算法实现,不能直接指定)。

设计要求:

(1) 符合课题要求,实现相应功能;

(2) 要求界面友好美观,操作方便易行;

(3) 注意程序的实用性、安全性;

2.程序调试

        逐个实现功能并最后退出。 

3.代码实现

1.结构体与数据初始化

由于导航系统是归于一个固定的地址,并不需要用户自行键入,所以在全局变量里存储使用。

int visited[MAXSIZE];

char R[MAXSIZE][MAXSIZE] = {
    {" 1  文涛九  "},
    {" 2  龙山餐厅        "},
    {" 3  十号教学楼       "},
    {" 4  五号教学楼       "},
    {" 5  图书馆          "},
    {" 6  九号教学楼       "},
    {" 7  瑾瑜国际会议中心          "},
    {" 8  东区篮球场          "},
    {" 9  主操场       "},
    {" 10 十七号教学楼       "},
    {" 11 十一号教学楼          "},
    {" 12 行知广场        "},
    {" 13 铁路主题公园            "},
    {" 14 七道门          "},
    {" 15 柏林园       "},
    {" 16 第四食堂        "},
    {" 17 怡丁苑    "},
    {" 18 软件学院    "},
};

int A[MAXSIZE][MAXSIZE] = {
        {0,200,250,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,800},
        {200,0,50,INFINIFY,INFINIFY,INFINIFY,50,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY},
        {250,50,0,50,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY},
        {INFINIFY,INFINIFY,50,0,INFINIFY,INFINIFY,INFINIFY,100,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY},
        {INFINIFY,INFINIFY,INFINIFY,INFINIFY,0,100,200,60,INFINIFY,INFINIFY,INFINIFY,1200,INFINIFY,INFINIFY,INFINIFY,50,INFINIFY,INFINIFY},
        {INFINIFY,INFINIFY,INFINIFY,INFINIFY,100,0,INFINIFY,50,900,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY},
        {INFINIFY,50,INFINIFY,INFINIFY,200,INFINIFY,0,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY},
        {INFINIFY,INFINIFY,INFINIFY,100,60,50,INFINIFY,0,INFINIFY,700,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY},
        {INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,900,INFINIFY,INFINIFY,0,50,500,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY},
        {INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,50,INFINIFY,700,50,0,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY},
        {INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,500,INFINIFY,0,100,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY},
        {INFINIFY,50,INFINIFY,INFINIFY,1200,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,100,0,50,100,INFINIFY,INFINIFY,INFINIFY,INFINIFY},
        {INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,100,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,50,0,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY},
        {INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,100,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,100,INFINIFY,0,1000,INFINIFY,800,INFINIFY},
        {INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,1000,0,500,INFINIFY,300},
        {INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,500,0,100,INFINIFY},
        {INFINIFY,INFINIFY,500,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,800,INFINIFY,100,0,INFINIFY},
        {800,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,INFINIFY,300,INFINIFY,INFINIFY,0},
};

int B[MAXSIZE] = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18 };

typedef char DataType;
typedef int  WeightType;
typedef struct          //以下定义邻接矩阵类型
{
    int number;             //顶点编号
    DataType xinxi;      //顶点其他信息
}VertexType;           //顶点类型

typedef struct
{
    WeightType G[MAXSIZE][MAXSIZE];    //邻接矩阵数组
    int Nv;                   //顶点数
    int Ne;                  //边数
    VertexType Data[MAXSIZE];     //存放顶点信息
}MGraph;                    //完整的图邻接矩阵类型

typedef struct 
  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值