|
|
@ -2,27 +2,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
# 项目名称 城市公路导航系统
|
|
|
|
# 项目名称 城市公路导航系统
|
|
|
|
|
|
|
|
|
|
|
|
### 成员
|
|
|
|
|
|
|
|
杨腾泽,刘鑫成,李培毅,孙英皓
|
|
|
|
杨腾泽,刘鑫成,李培毅,孙英皓
|
|
|
|
|
|
|
|
|
|
|
|
**摘要**:本项目针对什么问题,实现了哪些功能。为了有效地存储和处理何种数据,采用了何种数据结构。为了解决什么问题,采用了什么算法,算法效率如何。针对其他特定需求做了哪些工作。项目的整体效果如何,有何亮点和创新。
|
|
|
|
**摘要**:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
任务分工及完成情况。
|
|
|
|
|
|
|
|
| 任务 | 设计 | 测试 |
|
|
|
|
|
|
|
|
| ---- | ---- | ---- |
|
|
|
|
|
|
|
|
| 1. 系统分析 | 李培毅 | 刘鑫成 |
|
|
|
|
|
|
|
|
| 2. 系统设计 | 杨腾泽 | 孙英皓 |
|
|
|
|
|
|
|
|
| 3. 系统实现 | 刘鑫成 | 杨腾泽 |
|
|
|
|
|
|
|
|
| 4. 系统测试 | 孙英皓 | 李培毅 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
工作量占比。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 杨腾泽 | 孙英皓 | 李培毅 | 刘鑫成 |
|
|
|
|
|
|
|
|
|--------|-------|---------|-------|
|
|
|
|
|
|
|
|
| 25 | 25 | 25 | 25 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(1) 基于真实的公路数据建立导航地图模型,编制成格式简单的数据文件包括城市线路名称、站点名称。
|
|
|
|
(1) 基于真实的公路数据建立导航地图模型,编制成格式简单的数据文件包括城市线路名称、站点名称。
|
|
|
|
(2)系统能够读取公路导航地图数据文件,建立公路模型,也能够将模型输出成数据文件,以便验证模型的正确性。
|
|
|
|
(2)系统能够读取公路导航地图数据文件,建立公路模型,也能够将模型输出成数据文件,以便验证模型的正确性。
|
|
|
@ -37,24 +19,11 @@
|
|
|
|
交通网络中常常提出这样的问题:从甲地到乙地之间是否有公路连通?在有多条通路的情况下,哪一条路最短?导航系统便可以解决这样的问题。与此同时,城市的扩建,新地点的添加,新道路的修建,需要导航系统具备添加新地点,添加新路线的功能。而受一些生态工程的实施,例如退耕还林还草,和自然条件的影响,本来存在的一些地点或道路需要删除或更改,此时导航图还应该及时的更新,以适应新的查找两点间最短路径的需要。
|
|
|
|
交通网络中常常提出这样的问题:从甲地到乙地之间是否有公路连通?在有多条通路的情况下,哪一条路最短?导航系统便可以解决这样的问题。与此同时,城市的扩建,新地点的添加,新道路的修建,需要导航系统具备添加新地点,添加新路线的功能。而受一些生态工程的实施,例如退耕还林还草,和自然条件的影响,本来存在的一些地点或道路需要删除或更改,此时导航图还应该及时的更新,以适应新的查找两点间最短路径的需要。
|
|
|
|
除此之外,用户的查找应是极为方便的,对于最短路线, 新添加的地点和路径以及删除的地点和路径的感知应是直观的,这样才能真正的给使用导航系统的人们提供方便。
|
|
|
|
除此之外,用户的查找应是极为方便的,对于最短路线, 新添加的地点和路径以及删除的地点和路径的感知应是直观的,这样才能真正的给使用导航系统的人们提供方便。
|
|
|
|
|
|
|
|
|
|
|
|
(1)基于真实的公路地图数据建立导航地图模型,编制成格式简单的数据文件,包括城市名称,以及邻近城市之间的公路里程数。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(2)系统能够读取导航地图数据文件,建立地图模型,也能够将模型输出成地图数据文件,以便验证模型的正确性。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(3)通过人机交互的方式输入起点和终点城市名称,系统给出最短路径和导航路径上途径的城市名称。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(4)能够读取不同的导航地图进行功能测试。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
要求系统运行正常、功能完整;数据结构使用得当,算法有较高的效率;代码规范、可读性高,结构清晰;具备一定的健壮性、可靠性和可维护性。
|
|
|
|
|
|
|
|
## 1.2 可行性分析
|
|
|
|
## 1.2 可行性分析
|
|
|
|
|
|
|
|
|
|
|
|
地图可以用图结构建立模型,每个城市作为图中的一个顶点,城市之间的公路对应图中的边。给定起点和终点的条件下,可以利用最短路径算法求得导航路径。
|
|
|
|
明确解决问题的关键:最关路径算法。
|
|
|
|
|
|
|
|
核心数据结构:图。
|
|
|
|
真实的公路地图数据需要经过预先处理,编辑并保存成便于程序读取和处理的格式。在数据量比较大的情况下,要根据数据的特点采用合适的数据结构。
|
|
|
|
核心算法:Dijkstra
|
|
|
|
|
|
|
|
|
|
|
|
除了基于真实数据的测试,还可以采用小规模的模拟数据进行测试,以便验证算法的正确性。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
明确解决问题的关键,核心数据结构,核心算法等。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
确定解决问题的总体思路和方案:使用dijkxtra最短路径进行计算。
|
|
|
|
确定解决问题的总体思路和方案:使用dijkxtra最短路径进行计算。
|
|
|
|
|
|
|
|
|
|
|
@ -124,14 +93,6 @@ short.h
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 2. 系统设计
|
|
|
|
# 2. 系统设计
|
|
|
|
|
|
|
|
|
|
|
|
## 2.1 概要设计
|
|
|
|
## 2.1 概要设计
|
|
|
@ -146,63 +107,6 @@ short.h
|
|
|
|
|
|
|
|
|
|
|
|
首先,分析对比几种可选的数据结构设计方案。如图可以采用邻接矩阵,也可以采用邻接表,表示集合可以用普通的查找表,还可以用不相交集。给出每一种设计方案的特点(优势、不足等)。然后,综合考虑各种因素(空间、时间、乃至团队成员的水平等),给出你的选择。
|
|
|
|
首先,分析对比几种可选的数据结构设计方案。如图可以采用邻接矩阵,也可以采用邻接表,表示集合可以用普通的查找表,还可以用不相交集。给出每一种设计方案的特点(优势、不足等)。然后,综合考虑各种因素(空间、时间、乃至团队成员的水平等),给出你的选择。
|
|
|
|
|
|
|
|
|
|
|
|
### (1)xxx结构
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
给出核心数据结构的设计,包括文字描述和示意图。讲清楚数据是如何组织的。多个数据结构,逐一列出。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### (2)xxx结构
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
给出核心数据结构的设计,包括文字描述和示意图。讲清楚数据是如何组织的。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
###
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 2.3 算法设计
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
首先,分析对比几种可选的算法设计方案。如是否排序,广度优先或深度优先搜索等。给出每一种设计方案的特点(优势、不足)。然后,综合考虑各种因素(空间、时间、乃至团队成员的水平等),给出你的选择。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### (1)Dijkstra算法
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
求最短路径Dijkstra算法的实现:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
设置Visited[]保存是否被标记,Dis[]保存用户起点到下标号的节点路径的长度,Father[]保存最短路径上的前一个节点。其他类似于Prim算法。
|
|
|
|
|
|
|
|
算法主体有三步:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1.更新:找到这样的两个顶点 即 i位置已经被访问 且j位置未被访问 且ij有连接,把(0,i)+(i,j)和(0,j)中的较小者赋给j,并且Father[j] = i即i作为j的前驱节点。
|
|
|
|
|
|
|
|
2.访问:每轮在更新Dis后 判断最小未被标记的顶点 对其访问(vis = 1;)
|
|
|
|
|
|
|
|
3.重复1、2 步骤直到Visited[]的值全为1为止。
|
|
|
|
|
|
|
|
然后是输出语句:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
输出用户输入位置到其他各个顶点的最短路径长度:
|
|
|
|
|
|
|
|
直接一个循环输出Dis数组的前n位即可
|
|
|
|
|
|
|
|
输出用户输入位置到其他各个顶点的最短路径对应的路线:
|
|
|
|
|
|
|
|
首先设置i从0到n的循环每次都将i赋值给VVV作为终点,v是用户输入的起点位置。
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
while (Father[vvv] != -1 && Father[vvv] != v)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
cout << Father[vvv] << "<--";
|
|
|
|
|
|
|
|
vvv = Father[vvv];
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
根据Father数组内存的节点的前驱关系输出路线。
|
|
|
|
|
|
|
|
以上是迪杰斯特拉算法的基础部分,
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
在本程序中由于多次调用了此算法,为了减少重复的代码提高代码的复用性,于是在此算法中增加了一个接口,即一个switch case开关语句,调用迪杰斯特拉时需要在参数列表中给出需要进入的部分以实现不同的功能。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
给出核心算法的设计,包括伪代码或流程图。多个核心算法,逐一列出。只列举解决问题的核心算法,重点讲清楚是如何解决问题的。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### (2)XXX算法
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
给出核心算法的设计,包括伪代码或流程图。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 3. 系统实现
|
|
|
|
# 3. 系统实现
|
|
|
@ -211,33 +115,28 @@ while (Father[vvv] != -1 && Father[vvv] != v)
|
|
|
|
|
|
|
|
|
|
|
|
本程序首先是用户编辑界面,用户根据自己的需求编写地图,从而加入顶点的数组之中,创建的地图用邻接矩阵存储,在从主函数之中进行调用,实现对两个算法的调用。用户在输入顶点以及边的信息都会存储,在存储成功之后会提示用户存储成功,之后进入到菜单界面,菜单界面提供两种选择口合,分别可以调运Dijkstra和Floyd算法调用之后输入相应的口令以及要查询的城市编号, 算法会根据邻接矩阵存储的地图进行计算,求出最短路径。在以后使用完系统后,可输入口合 0,系统会结束一切运算,退出程序。
|
|
|
|
本程序首先是用户编辑界面,用户根据自己的需求编写地图,从而加入顶点的数组之中,创建的地图用邻接矩阵存储,在从主函数之中进行调用,实现对两个算法的调用。用户在输入顶点以及边的信息都会存储,在存储成功之后会提示用户存储成功,之后进入到菜单界面,菜单界面提供两种选择口合,分别可以调运Dijkstra和Floyd算法调用之后输入相应的口令以及要查询的城市编号, 算法会根据邻接矩阵存储的地图进行计算,求出最短路径。在以后使用完系统后,可输入口合 0,系统会结束一切运算,退出程序。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 3.1 核心数据结构的实现
|
|
|
|
## 3.1 核心数据结构的实现
|
|
|
|
|
|
|
|
|
|
|
|
```cpp
|
|
|
|
核心算法Dijkstra
|
|
|
|
struct ArcCell
|
|
|
|
算法floyd
|
|
|
|
{
|
|
|
|
项目文件结构可以设计为:
|
|
|
|
int length;//边的长度,既两个地点之的长
|
|
|
|
|
|
|
|
int money;
|
|
|
|
-CityRoadNav/
|
|
|
|
}; //定义边的类型
|
|
|
|
- CityRoadNav.vcxproj // Visual Studio项目文件
|
|
|
|
|
|
|
|
- CityRoadNav.vcxproj.filters
|
|
|
|
struct VertexType
|
|
|
|
- CityRoadNav.slnSource Files/ // 源代码目录
|
|
|
|
{ int no; //顶点的编号
|
|
|
|
- CityNetwork.cpp // 城市网络类,存储城市数据及邻接矩阵
|
|
|
|
char sight[10]; //地点
|
|
|
|
- CityNetwork.h
|
|
|
|
char introduction[100]; //地点的介绍
|
|
|
|
- Dijkstra.cpp // Dijkstra算法类,实现最短路径搜索
|
|
|
|
}; //定义顶点的类型
|
|
|
|
- Dijkstra.h
|
|
|
|
|
|
|
|
- DynamicProgramming.cpp // 动态规划算法类,实现最优路径搜索
|
|
|
|
struct MatGrath
|
|
|
|
- DynamicProgramming.h
|
|
|
|
{
|
|
|
|
- main.cpp // 主程序
|
|
|
|
int vexnum; //顶点数
|
|
|
|
- ...Header Files/ // 头文件目录
|
|
|
|
int arcnum; //边数
|
|
|
|
- ...Resources/ // 资源文件目录
|
|
|
|
VertexType vexs[NO]; //在图结构体中调用点的结构体
|
|
|
|
- CityInfo.txt // 城市信息及邻接矩阵
|
|
|
|
ArcCell arc[NO][NO]; //在图结构体中调用边的结构体
|
|
|
|
|
|
|
|
};
|
|
|
|
如以下代码,采用迪杰斯特拉算法实现求取路径最短值
|
|
|
|
```
|
|
|
|
```
|
|
|
|
int Ppath2(MatGrath &G,int path[],int i,int v) //前向递归查找路径上的顶点
|
|
|
|
int Ppath2(MatGrath &G,int path[],int i,int v) //前向递归查找路径上的顶点
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -311,13 +210,6 @@ int Ppath1(MatGrath &G,int path[][MAXV],int v,int w) //前向递归查找
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 3.2 核心算法的实现
|
|
|
|
## 3.2 核心算法的实现
|
|
|
|
主函数可以分为以下几个模块:
|
|
|
|
主函数可以分为以下几个模块:
|
|
|
|
1. 数据读取模块:读取CityInfo.txt文件,构建城市网络,存储在邻接矩阵中。
|
|
|
|
1. 数据读取模块:读取CityInfo.txt文件,构建城市网络,存储在邻接矩阵中。
|
|
|
@ -326,66 +218,10 @@ int Ppath1(MatGrath &G,int path[][MAXV],int v,int w) //前向递归查找
|
|
|
|
4. 路径查询模块:选择Dijkstra算法或动态规划算法计算路径,并返回路径信息。
|
|
|
|
4. 路径查询模块:选择Dijkstra算法或动态规划算法计算路径,并返回路径信息。
|
|
|
|
5. 路径显示模块:将计算得到的路径用可视化方式显示给用户。
|
|
|
|
5. 路径显示模块:将计算得到的路径用可视化方式显示给用户。
|
|
|
|
|
|
|
|
|
|
|
|
在验证到其他城市中间不超过 2 个城市时,新建一个二维数组将原二维数组中的权值全部改为1,这样用dijkstra算法得到的权值最小的路径就经过节点最少的路径。
|
|
|
|
核心算法Dijkstra
|
|
|
|
|
|
|
|
算法floyd
|
|
|
|
```cpp
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//Dijkstra算法
|
|
|
|
|
|
|
|
void Ppath(MatGrath &G,int path[],int w,int v) //前向递归查找路径上的顶点
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
int k;
|
|
|
|
|
|
|
|
k=path[w];
|
|
|
|
|
|
|
|
if (k==v) return; //找到了起点则返回
|
|
|
|
|
|
|
|
Ppath(G,path,k,v); //找顶点k的前一个顶点
|
|
|
|
|
|
|
|
printf("%s->",G.vexs[k].sight); //输出顶点k
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int ShortestPath(MatGrath &G,int v,int w)//求两点之间的最短路径
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
int dist[MAXV],path[MAXV];
|
|
|
|
|
|
|
|
int s[MAXV];
|
|
|
|
|
|
|
|
int mindis,i,j,u;
|
|
|
|
|
|
|
|
for (i=0; i<G.vexnum; i++)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
dist[i]=G.arc[v][i].length; //距离初始化
|
|
|
|
|
|
|
|
s[i]=0; //s[]置空
|
|
|
|
|
|
|
|
if (G.arc[v][i].length<INF) //路径初始化
|
|
|
|
|
|
|
|
path[i]=v; //v到i有边
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
path[i]=-1; //v到i没有边,置顶点i的前一个顶点为-1
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
s[v]=1;
|
|
|
|
|
|
|
|
path[v]=0; //源点编号v放入s中
|
|
|
|
|
|
|
|
for (i=0; i<G.vexnum; i++) //循环直到所有顶点的最短路径都求出
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
mindis=INF; //mindis置最小长度初值
|
|
|
|
|
|
|
|
for (j=0; j<G.vexnum; j++) //选取不在s中且具有最小距离的顶点u
|
|
|
|
|
|
|
|
if (s[j]==0 && dist[j]<mindis)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
u=j;
|
|
|
|
|
|
|
|
mindis=dist[j];
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
s[u]=1; //顶点u加入s中
|
|
|
|
|
|
|
|
for (j=0; j<G.vexnum; j++) //修改不在s中的顶点的距离
|
|
|
|
|
|
|
|
if (s[j]==0)
|
|
|
|
|
|
|
|
if (G.arc[u][j].length<INF && dist[u]+G.arc[u][j].length<dist[j])
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
dist[j]=dist[u]+G.arc[u][j].length;
|
|
|
|
|
|
|
|
path[j]=u;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (s[w]==1)
|
|
|
|
如以下代码,采用迪杰斯特拉算法实现求取路径最短值
|
|
|
|
{
|
|
|
|
|
|
|
|
printf(" 从%s到%s的最短路径长度为:%d米\t路径为:",G.vexs[v].sight,G.vexs[w].sight,dist[w]);
|
|
|
|
|
|
|
|
printf("%s->",G.vexs[v].sight); //输出路径上的起点
|
|
|
|
|
|
|
|
Ppath(G,path,w,v); //输出路径上的中间点
|
|
|
|
|
|
|
|
printf("%s\n",G.vexs[w].sight); //输出路径上的终点
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if(s[w]==0)
|
|
|
|
|
|
|
|
printf("从%d到%d不存在路径\n",v,w);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
```
|
|
|
|
```
|
|
|
|
int Ppath2(MatGrath &G,int path[],int i,int v) //前向递归查找路径上的顶点
|
|
|
|
int Ppath2(MatGrath &G,int path[],int i,int v) //前向递归查找路径上的顶点
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -458,14 +294,6 @@ int Ppath1(MatGrath &G,int path[][MAXV],int v,int w) //前向递归查找
|
|
|
|
```
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 4. 系统测试
|
|
|
|
# 4. 系统测试
|
|
|
|
|
|
|
|
|
|
|
|
描述测试的思路和方法。比如,先用小数据量进行测试,再用真实数据进行测试。
|
|
|
|
描述测试的思路和方法。比如,先用小数据量进行测试,再用真实数据进行测试。
|
|
|
@ -490,15 +318,6 @@ int Ppath1(MatGrath &G,int path[][MAXV],int v,int w) //前向递归查找
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 5. 总结
|
|
|
|
# 5. 总结
|
|
|
|
|
|
|
|
|
|
|
|
概况项目和完成情况。
|
|
|
|
概况项目和完成情况。
|
|
|
@ -507,8 +326,7 @@ int Ppath1(MatGrath &G,int path[][MAXV],int v,int w) //前向递归查找
|
|
|
|
|
|
|
|
|
|
|
|
个人小结:
|
|
|
|
个人小结:
|
|
|
|
|
|
|
|
|
|
|
|
杨腾泽:通过这次数据结构课程设计,我对《数据结构》这门课程有了更深一步的了解,使我对《数据结构》这门课程掌握以及运用更加灵活·同时也让我发现了自已在这门课上的不足与缺陷,同时也明确了自己在以后的类似课程中的具体学习方法。
|
|
|
|
杨腾泽:
|
|
|
|
这次在应用中,我发现了自己的很多不足,在编写城市公路导航系统的过程中,自己C语言方面的只是掌握太少,很多功能需求只能退而求其次,一次又一 次的更改,一次又一次的失败,也终于是在最后也完成了自己的要求,同时我也 知道了平时用功学习的重要性。尤其是在日常学习之中,对于单一的只是点也许 掌握的还不错,但是自己动手太少,实践经验严重不足,且面临课程设计之时,要求多方面的只是结和编码,对于我而言还是有很大的难度的。 如此次对于邻接 矩阵的存储于读取,以及最短路算法的实现,两个及其重要的算法,狄克斯特算法和佛洛依德算法,在具体的应用上还是有很多不足
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
刘鑫成:本次的系统研发研活动,让我体验到了程序开发的复杂性与程序开发成功的自豪感,一个项目的完成离不开一个团队的团结协作,在进行项目时,需要对其进行反复的纠错和改进,在更改和发现中不断地改进和提升自,从而丰富自己。这次团队体验,让我能够初步地体会到一个团队间的分工协作的重要性,成员分工以及项目领导者的重要性,让我受益匪浅
|
|
|
|
刘鑫成:本次的系统研发研活动,让我体验到了程序开发的复杂性与程序开发成功的自豪感,一个项目的完成离不开一个团队的团结协作,在进行项目时,需要对其进行反复的纠错和改进,在更改和发现中不断地改进和提升自,从而丰富自己。这次团队体验,让我能够初步地体会到一个团队间的分工协作的重要性,成员分工以及项目领导者的重要性,让我受益匪浅
|
|
|
|
|
|
|
|
|
|
|
@ -521,5 +339,7 @@ int Ppath1(MatGrath &G,int path[][MAXV],int v,int w) //前向递归查找
|
|
|
|
|
|
|
|
|
|
|
|
# 参考文献
|
|
|
|
# 参考文献
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
列出参考的文献资料,根据情况自行添加。
|
|
|
|
|
|
|
|
|
|
|
|
[1] 严蔚敏, 吴伟民. 数据结构(C语言版). 北京: 清华大学出版社, 2007.
|
|
|
|
[1] 严蔚敏, 吴伟民. 数据结构(C语言版). 北京: 清华大学出版社, 2007.
|
|
|
|
[山东省国道里程表](http://www.onegreen.net/maps/HTML/50213.html)
|
|
|
|
|
|
|
|