数据结构课程设计报告_最短路径

合集下载

数据结构课程设计报告 最短路径:拯救007

数据结构课程设计报告   最短路径:拯救007

数据结构课程设计报告最短路径:拯救007专业 物联网工程学生姓名班级学号指导教师完成日期2016年1月13日目录1、课程设计目的及要求 (1)2、课题总体设计 (2)3、详细设计 (4)4、图像文件 (7)5、调试与测试 (10)6、小结 (10)7、参考文献 (16)8、源程序清单 (17)数据结构程序设计数据结构程序课程的设计1、课程设计目的及要求1)设计题目看过007系列电影的人们一定很熟悉James Bond这个世界上最著名的特工了。

在电影“Live and Let Die”中James Bond被一组毒品贩子抓住并且关到湖中心的一个小岛上,而湖中有很多凶猛的鳄鱼。

这时James Bond做出了最惊心动魄的事情来逃脱——他跳到了最近的鳄鱼的头上,在鳄鱼还没有反应过来的时候,他又跳到了另一只鳄鱼的头上……最后他终于安全地跳到了湖岸上。

假设湖是100×100的正方形,设湖的中心在(0,0),湖的东北角的坐标是(50,50)。

湖中心的圆形小岛的圆心在(0,0),直径是15。

一些凶猛的鳄鱼分布在湖中不同的位置。

现已知湖中鳄鱼的位置(坐标)和James Bond可以跳的最大距离,请你告诉James Bond一条最短的到达湖边的路径。

他逃出去的路径的长度等于他跳的次数。

2)输入要求程序从“input.txt”文件中读取输入信息,这个文件包含了多组输入数据。

每组输入数据的起始行中包含两个整数n和d,n是鳄鱼的数量而且n≤100,d是007可以跳的最大距离而且d>0。

起始行下面的每一行是鳄鱼的坐标(x,y),其中x, y都是整数,而且没有任何两只鳄鱼出现在同一个位置。

input.txt文件以一个负数结尾。

3)输出要求程序输出结果输出到output.txt文件中。

对于每组输入数据,如果007可以逃脱,则输出到output.txt文件的内容格式如下:第一行是007必须跳的最小的步数,然后下面按照跳出顺序记录跳出路径上的鳄鱼坐标(x,y),每行一个坐标。

数据结构课程设计报告_最短路径C++

数据结构课程设计报告_最短路径C++

青岛理工大学琴岛学院设计报告课题名称:求解最优交通路径学院:计算机工程系专业班级:计算机科学与技术学号:#######学生:**指导教师:**青岛理工大学琴岛学院教务处2011 年 7 月 7日图1B.具体功能实现及相应的弗洛伊德算法首先,建立查询信息对话框,使用户能够录入需要查询的城市代号,并显示路径长度及最短路径沿途经过的城市。

并相应地添加如下变量int m_v0;int m_v1;int m_lj;CString m_zd;具体代码如下:#define MAXV 25 //最大顶点个数#define INF 32767 //用32767表示∞//以下定义邻接矩阵类型typedef struct{ int no; //顶点编号char name[10]; //顶点名称} VertexType; //顶点类型typedef struct //图的定义{ int edges[MAXV][MAXV]; //邻接矩阵int vexnum,arcnum; //顶点数,弧数VertexType vexs[MAXV]; //存放顶点信息} MGraph; //图的邻接矩阵类型1.通过函数CreatUDN()存放城市路径信息,输入顶点之间的路径长度,创建带权图的邻接矩阵。

void CTDialog::CreatUDN(){MGraph *g=(MGraph*)malloc(sizeof(MGraph));int i,j;for(i=0;i<MAXV;i++) //录入权值,计算存储用for(j=0;j<MAXV;j++){g->edges[i][j]=INF;if(i==j)g->edges[i][j]=0; //初始化置任意两城市之间距离为无穷大,即两城市之间没有直接通路{if(i!=j)m_zd="没有路径";}else if(x==i&&y==j){m_lj=A[i][j];CString zfc;zfc.Format("%d",i); //输出路径上的起点m_zd+=zfc;ppath(path,i,j); //输出路径上的中间点zfc.Format("-->%d",j); //输出路径上的终点m_zd+=zfc;}}}4.输出最短路径函数,递归输出从顶点i到j的最短路径中依次经过的顶点,直到path[i][j]=-1,即没有中间顶点为止。

数据结构实验报告五最短路径

数据结构实验报告五最短路径

数据结构实验报告五最短路径应用所学数据结构知识,独立完成问题分析^p ,结合数据结构理论知识,编写程序求解指定问题。

1.3 系统实现方案首先确定系统要实现怎样的目的,实现这些目的需要先实现哪些程序,这就是核心部分,划分出模块并写出其代码,此程序大致分了六大模块,由一个主函数组和五个自定义函数组成,而后是上机调试,将几大模块组成一个协调完整的能实现其功能的程序,最后提交设计报告二、系统分析^p :2.1设计思想用邻接矩阵来存储交通网络图的信息,运用迪杰斯特拉算法实现图上单最短路径问题,然后运用费洛伊德算法实现图中任意一对顶点间最短路径问题,这样就会实现旅客所要咨询的问题。

2.2设计要求该交通咨询系统要完成城市网络图的存储,并要实现求任意一个城市顶点到其他城市顶点的最短路径问题,还要实现任意两个城市顶点间的最短路径问题。

故设计要分成三部分,一是建立交通网络图的存储结构;二是解决单路径问题;最后再实现两个城市之间的最短路径问题。

设计要求:1.建立交通网络网的存储结构。

2.总体设计要画流程图。

3.提供程序测试方案。

4.界面友好。

2.3需求分析^p根据要求,需要在系统中建立无向图。

系统应该有高度灵活性,可以由用户根据当前交通网络图输入初始数据,并且可以更改。

系统根据用户的输入建立无向图的结构,并通过狄克斯特拉算法和弗洛伊德算法实现要求,并提供两种功能供用户选择。

2.4 算法描述录入城市及道路数据预置城市间的距离构建交通网交通查询系统根据无向图建立查询功能查询一个城市到其它城市的最短路径查询任意两城市间的最短路径狄克斯特拉算法的具体流程图开始初始化距离和路径 i=1 i++ j=1;j++;jn 修改最短路径和距离输出结果弗洛伊德算法的具体流程图开始初始化距离和路径设为从到的只以集合中的节点为中间节点的最短路径的长度最短路径不经过点k 最短路径经过点k 输出结果三、概要设计:程序中将涉及下列两个抽象数据类型:一个是图,一个是队列。

数据结构最短路径课设报告

数据结构最短路径课设报告

数据结构与算法课程设计报告书题目:导航最短路径查询班级:11101111学号:**********姓名:教师周期:2012.12.17-2012.12.21 (以下由验收教师填写)成绩:2012年12月21日《导航最短路径查询》一、课程设计的目的与要求(一)课程设计目的与任务通过学习,了解并初步掌握设计、实现较大系统的完整过程,包括系统分析、编码设计、编码集成以及调试分析,熟练掌握数据结构的选择、设计、实现、以及操作方法,为进一步的开发应用打好基础。

(二)题目要求要求在数据结构的逻辑特性和物理表示、数据结构的选择和应用、算法的设计及其实现等方面,加深对课程基本内容的理解。

同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。

二、设计正文1、系统分析和开发背景该程序所做的工作是给司机们提供最佳路线,来提高能源和时间的合理利用。

(1)把城市交通线路转化为图,从而对图进行相应的结构存储;(2)程序的输出信息主要为:起始城市到目的城市的最短路路径。

(3)程序的功能主要包括:城市之间路径的存储,最短路径的计算,以及最短路径和邻接矩阵的输出;2 、功能详细描述先假设有四个城市甲乙丙丁,甲乙相距2千米,且只有从乙到甲的单程线路。

甲丙相距7千米,且只有从甲到丙的单程线路。

甲丁相距4千米,且只有从甲到丁的单程线路。

乙丙相距5千米,且只有从丙到乙的单程线路。

乙丁相距3千米,且只有从丁到乙的单程线路。

丙丁相距3千米,且只有从丁到丙的单程线路。

戊甲相距6千米,且只有从戊到甲的单程线路。

戊丁相距2千米,且只有从丁到戊的单程线路。

乙己相距8千米,且只有从乙到己的单程线路。

丙己相距6千米,且只有从己到丙单程线路。

编程出能求出个一点到任一点的最短路经。

3、数据结构设计(1)typedef struct{int no; //顶点编号InfoType info; //顶点其他信息,这里用于存放边的权值}VertexType; //顶点类型typedef struct //图的定义{int edges[MAXV][MAXV]; //邻接矩阵int n,e; //顶点数,弧数VertexType vexs[MAXV]; //存放顶点信息}MGraph; //图的邻接矩阵类型//以下定义邻接表类型typedef struct ANode //弧的结点结构类型{int adjvex; //该弧的终点位置struct ANode *nextarc; //指向下一个弧的指针InfoType info; //该弧的相关信息,这里用于存放权值}ArcNode;typedef int Vertex;typedef struct Vnode //邻接表头结点的类型{Vertex data; //顶点信息ArcNode *firstarc[MAXV]; //指向第一条弧}VNode;typedef VNode AdjList[MAXV];//AdjList是邻接表类型typedef struct{AdjList adjlist; //邻接表int n,e; //图中顶点数n和边数e}ALGraph; //图的邻接表类型4、主要功能逻辑过程和实现算法用到的主要函数:(1)void DispMat(MGraph g) //输出邻接矩阵(2)void ppath(int path[][MAXV],int v,int endv) //输出相应选择的起点和终点的最短路。

数据结构课程设计最短路径问题实验报告

数据结构课程设计最短路径问题实验报告

目录交通咨询系统设计(最短路径问题)一、概述在交通网络日益发达的今天,针对人们关心的各种问题,利用计算机建立一个交通咨询系统。

在系统中采用图来构造各个城市之间的联系,图中顶点表示城市,边表示各个城市之间的交通关系,所带权值为两个城市间的耗费。

这个交通咨询系统可以回答旅客提出的各种问题,例如:如何选择一条路径使得从A城到B城途中中转次数最少;如何选择一条路径使得从A城到B城里程最短;如何选择一条路径使得从A城到B城花费最低等等的一系列问题。

二、系统分析设计一个交通咨询系统,能咨询从任何一个城市顶点到另一城市顶点之间的最短路径(里程)、最低花费或是最少时间等问题。

对于不同的咨询要求,可输入城市间的路程、所需时间或是所需费用等信息。

针对最短路径问题,在本系统中采用图的相关知识,以解决在实际情况中的最短路径问题,本系统中包括了建立图的存储结构、单源最短问题、对任意一对顶点间最短路径问题三个问题,这对以上几个问题采用了迪杰斯特拉算法和弗洛伊德算法。

并未本系统设置一人性化的系统提示菜单,方便使用者的使用。

三、概要设计可以将该系统大致分为三个部分:① 建立交通网络图的存储结构;② 解决单源最短路径问题;③ 实现两个城市顶点之间的最短路径问题。

四、详细设计建立图的存储结构定义交通图的存储结构。

邻接矩阵是表示图形中顶点之间相邻关系的矩阵。

设G=(V,E)是具有n个顶点的图,则G的邻接矩阵是具有如下定义的n阶方阵。

注:一个图的邻接矩阵表示是唯一的!其表示需要用一个二维数组存储顶点之间相邻关系的邻接矩阵并且还需要用一个具有n个元素的一维数组来存储顶点信息(下标为i的元素存储顶点V的信息)。

i邻接矩阵的存储结构:附录#include<>#include<>#defineMVNum100#defineMaxint32767enumboolean{FALSE,TRUE}; typedefcharVertexType;typedefintAdjmatrix;typedefstruct{VertexTypevexs[MVNum];Adjmatrixarcs[MVNum][MVNum];}MGraph;intD1[MVNum],p1[MVNum];intD[MVNum][MVNum],p[MVNum][MVNum]; voidCreateMGraph(MGraph*G,intn,inte){inti,j,k,w;for(i=1;i<=n;i++)G->vexs[i]=(char)i;for(i=1;i<=n;i++)for(j=1;j<=n;j++)G->arcs[i][j]=Maxint;printf("输入%d条边的及w:\n",e);for(k=1;k<=e;k++){scanf("%d,%d,%d",&i,&j,&w);G->arcs[i][j]=w;}printf("有向图的存储结构建立完毕!\n"); }voidDijkstra(MGraph*G,intv1,intn){intD2[MVNum],p2[MVNum];intv,i,w,min;enumbooleanS[MVNum];for(v=1;v<=n;v++){S[v]=FALSE;D2[v]=G->arcs[v1][v];if(D2[v]<Maxint)p2[v]=v1;elsep2[v]=0;}D2[v1]=0;S[v1]=TRUE;for(i=2;i<n;i++){min=Maxint;for(w=1;w<=n;w++)if(!S[w]&&D2[w]<min){v=w;min=D2[w];}S[v]=TRUE;for(w=1;w<=n;w++)if(!S[w]&&(D2[v]+G->arcs[v][w]<D2[w])){D2[w]=D2[v]+G->arcs[v][w];p2[w]=v;}}printf("路径长度路径\n");for(i=1;i<=n;i++){printf("%5d",D2[i]);printf("%5d",i);v=p2[i];while(v!=0){printf("<-%d",v);v=p2[v];}printf("\n");}}voidFloyd(MGraph*G,intn){inti,j,k,v,w;for(i=1;i<=n;i++)for(j=1;j<=n;j++){if(G->arcs[i][j]!=Maxint)p[i][j]=j;elsep[i][j]=0;D[i][j]=G->arcs[i][j];}for(k=1;k<=n;k++){for(i=1;i<=n;i++)for(j=1;j<=n;j++){if(D[i][k]+D[k][j]<D[i][j]){D[i][j]=D[i][k]+D[k][j];p[i][j]=p[i][k];}}}}voidmain(){MGraph*G;intm,n,e,v,w,k;intxz=1;G=(MGraph*)malloc(sizeof(MGraph));printf("输入图中顶点个数和边数n,e:");scanf("%d,%d",&n,&e);CreateMGraph(G,n,e);while(xz!=0){printf("************求城市之间最短路径************\n");printf("=========================================\n");printf("1.求一个城市到所有城市的最短路径\n");printf("2.求任意的两个城市之间的最短路径\n");printf("=========================================\n");printf("请选择:1或2,选择0退出:\n");scanf("%d",&xz);if(xz==2){Floyd(G,n);printf("输入源点(或起点)和终点:v,w:");scanf("%d,%d",&v,&w);k=p[v][w];if(k==0)printf("顶点%d到%d无路径!\n",v,w);else{printf("从顶点%d到%d最短路径路径是:%d",v,w,v);while(k!=w){printf("--%d",k);k=p[k][w];}printf("--%d",w);printf("径路长度:%d\n",D[v][w]);}}elseif(xz==1)printf("求单源路径,输入源点v:");scanf("%d",&v);Dijkstra(G,v,n);}printf("结束求最短路径,再见!\n"); }。

最短路径_数据结构课程设计报告

最短路径_数据结构课程设计报告

最短路径_数据结构课程设计报告第一篇:最短路径_数据结构课程设计报告数据结构课程设计《数据结构》课程设计报告设计题目:____医院选址____________ 姓名:__________________ 学号:________________ 专业:___________院系:____________班级:_________________ 指导教师:_________________年 1月 3 日数据结构课程设计一、问题描述(1)题目内容:有n个村庄,现要从这n个村庄中选择一个村庄新建一所医院,使其余的村庄到这所医院的距离总和来说较短。

(n>=5)(2)基本要求:(3)可以输出每一对点间的路径长度;然后选取偏心度,最小的偏心度即为所求。

二、需求分析(4)本程序的功能包括找出每一对点间的路径长度。

(5)然后算出每一对点的偏心度。

(6)其中最小的偏心度即为所求。

三、概要设计操作集合:(7)public:MGraph(DataType a[],int b[][MaxSize],int n,int e);//初始化邻接矩阵和路径(8)void Floyd();//弗洛伊德算法的实现(9)void getE();//获取偏心度(10)void showdist();//把每一对顶点之间的路径权值show出来(11)~MGraph(){} //类的析构函数四、数据结构设计(1)DataType vertex[MaxSize];//存放图中顶点的数组(2)intarc[MaxSize][MaxSize];//存放图中边的数组(3)string path[MaxSize][MaxSize];//存放从Vi到Vj的最短路径,初始为//path[i][j]=“ViVj”(4)int dist[MaxSize][MaxSize];//存放求得的最短路径长度(5)int vertexNum, arcNum;//图的顶点数和边数(6)int E[MaxSize][2];//获取最小偏心度和该顶点五、算法设计1.算法分析1)对带权有向图的,调用Floyd算法,对每一对顶点间的最短路径长度的矩阵;2)对最短路径长度矩阵的每列求最大值,即得到各点的偏心度;3)具有最小偏心度的顶点即为所求。

大数据结构,课程设计,校园最短路径问题

大数据结构,课程设计,校园最短路径问题

一、课程设计题目:校园最短路径问题二、课程设计目的:1.了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;2.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;3.提高综合运用所学的理论知识和方法独立分析和解决问题的能力;4.训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所具备的科学工作方法和作风。

三、课程设计要求:1.设计的题目要求达到一定的工作量(300行以上代码),并具有一定的深度和难度。

2.编写出课程设计报告书,内容不少于10页(代码不算)。

四、需求分析:1、问题描述图的最短路径问题是指从指定的某一点v开始,求得从该地点到图中其它各地点的最短路径,并且给出求得的最短路径的长度及途径的地点。

除了完成最短路径的求解外,还能对该图进行修改,如顶点以及边的增删、边上权值的修改等。

校园最短路径问题中的数据元素有:a) 顶点数b) 边数c) 边的长度2、功能需求要求完成以下功能:a)输出顶点信息:将校园内各位置输出。

b)输出边的信息:将校园内每两个位置(若两个位置之间有直接路径)的距离输出。

c)修改:修改两个位置(若两个位置之间有直接路径)的距离,并重新输出每两个位置(若两个位置之间有直接路径)的距离。

d)求最短路径:输出给定两点之间的最短路径的长度及途径的地点或输出任意一点与其它各点的最短路径。

e)删除:删除任意一条边。

f)插入:插入任意一条边。

3、实现要点a) 对图的创建采用邻接矩阵的存储结构,而且对图的操作设计成了模板类。

为了便于处理,对于图中的每一个顶点和每一条边都设置了初值。

b) 为了便于访问,用户可以先输出所有的地点和距离。

c) 用户可以随意修改两点之间好的距离。

d) 用户可以增加及删除边。

e) 当用户操作错误时,系统会出现出错提示。

五、概要设计:1.抽象数据类型图的定义如下:ADT Graph{数据对象V:V是具有相同特性数据元素的集合,称为顶点集。

数据结构最短路径课程设计

数据结构最短路径课程设计

数据结构最短路径课程设计一、课程目标知识目标:1. 理解图的基本概念,掌握图的表示方法及其特性;2. 掌握最短路径的两种经典算法:Dijkstra算法和Floyd算法;3. 能够运用所学算法解决实际生活中的最短路径问题。

技能目标:1. 能够运用数据结构中的图,进行实际问题的建模;2. 能够编写并实现Dijkstra算法和Floyd算法,解决最短路径问题;3. 能够通过分析、比较两种算法,选择合适的算法解决特定问题。

情感态度价值观目标:1. 培养学生面对复杂数据结构问题时,保持积极探究、解决问题的态度;2. 培养学生的团队协作能力,学会在团队中分享、交流、互助;3. 通过解决实际生活中的问题,培养学生将所学知识应用于实践的意识。

课程性质分析:本课程为数据结构中的图部分,以最短路径为具体实例,帮助学生理解图的概念及其在实际中的应用。

学生特点分析:学生已具备一定的编程能力和数据结构基础知识,但对图的相关概念和算法掌握不足,需要通过具体案例和实际操作,提高理解和应用能力。

教学要求:1. 以实际问题引入,激发学生的学习兴趣;2. 采用任务驱动法,引导学生自主探究、实践;3. 结合课堂讲解和实际操作,使学生在实践中掌握知识;4. 注重团队合作,培养学生的沟通与协作能力。

二、教学内容1. 图的基本概念:图的定义、图的表示方法(邻接矩阵、邻接表)、图的遍历(深度优先搜索、广度优先搜索)。

2. 最短路径问题:最短路径的定义、最短路径算法的应用场景。

3. Dijkstra算法:算法原理、算法步骤、实例分析、编程实现。

4. Floyd算法:算法原理、算法步骤、实例分析、编程实现。

5. 算法比较与分析:Dijkstra算法与Floyd算法的优缺点比较、适用场景分析。

6. 实践项目:设计一个实际场景的最短路径问题,要求学生运用所学算法进行解决。

教学内容安排与进度:第一课时:图的基本概念、图的表示方法、图的遍历。

第二课时:最短路径问题、Dijkstra算法原理与实例分析。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

青岛理工大学琴岛学院
设计报告
课题名称:数据结构课程设计
学院:计算机工程系
专业班级:计算机网络技术
学号:aaaaaa
学生: aaa
指导教师: aaaaaaa
青岛理工大学琴岛学院教务处
2011 年 12 月 18日
四.调试分析(调试过程中出现的问题及处理方式)调试出现的界面
1)进入程序弹出查询信息对话框如图2:
图2
2) 输入查询信息,显示路径长度及最短路径,如果输入代号不在0~24之内,提示出错。

图3
图4
B.出现的问题及解决方式
1、在执行程序的时候不能显示最短的距离
解决方法:增加一个函数调用,调用的函数为ShortestPath(v0); /*计算两个城市之间的最短路径*/
2、不能连续查询,即查询一次完成后,必须重新运行才能就进行二次查询
解决方法:在代码中添加while( ) 语句printf("是否继续,1(继续查询),0(退出查询)");
printf("\n"); scanf("%d",&ch); 详见图5
图 5。

相关文档
最新文档