某数据结构课程设计公园导游图

合集下载

公园导览图课程设计

公园导览图课程设计

公园导览图课程设计一、课程目标知识目标:1. 学生能理解并描述公园导览图的基本构成元素,包括标题、图例、比例尺、方向指示和景点介绍。

2. 学生能掌握使用比例尺进行距离估算的方法,并能在实际中应用。

3. 学生能识别并运用基本的地理方向词,如北、东、南、西,以及上北下南左西右东。

技能目标:1. 学生能够运用所学知识,独立制作一份公园导览图,展示清晰、准确的景点位置和相关信息。

2. 学生通过小组合作,培养沟通协调能力,共同完成一份具有创意的公园导览图。

情感态度价值观目标:1. 学生对地理学科产生兴趣,认识到地理知识在生活中的实用性。

2. 学生在学习过程中,培养耐心、细心和团队合作精神。

3. 学生通过公园导览图的设计,增强对环境保护和公共设施的认识,提升社会责任感。

课程性质:本课程为地理学科教学,结合实际生活中的应用,注重培养学生的实践操作能力和合作精神。

学生特点:四年级学生具备一定的地理知识基础,好奇心强,喜欢动手操作,但注意力集中时间有限。

教学要求:教师需关注学生的个体差异,采用生动有趣的教学方法,引导学生主动参与,确保课程目标的实现。

在教学过程中,注重培养学生的实际操作能力,提高学生的综合素质。

二、教学内容1. 公园导览图的基本构成:- 标题设计:让学生了解并设计富有特色的标题,包括公园名称和导览图标题。

- 图例说明:介绍图例的作用,列举并解释常用的图例符号。

- 比例尺应用:学习比例尺的定义,掌握比例尺的使用方法,进行实际距离的估算。

- 方向指示:复习地理方向词,让学生在实际导览图上练习方向判断。

2. 公园景点介绍:- 选择教材中涉及的公园作为案例,详细介绍公园内的主要景点。

- 分析景点的地理位置、特点及相互之间的关系。

3. 导览图制作:- 制定详细的教学大纲,分步骤指导学生制作公园导览图。

- 教学内容的安排和进度:第一课时,学习公园导览图的基本构成;第二课时,分析公园景点及相互关系;第三课时,分组讨论并制作导览图。

公园导游图数据结构课程设计(可打印修改) (2)

公园导游图数据结构课程设计(可打印修改) (2)
图(Graph)是一种较线性表和树更为复杂的数据结构。在线性表中,数据
1
公园导游图
第一章 前言
元素之间仅有线性关系,每个数据元素只有一个直接前驱和一个直接后继;在 树形结构中,数据元素之间有着明显的层次关系,并且每一层上的数据元素可 能和下一层中多个元素(即其该子结点)相关,但只能和上一层中一个元素 (即其双亲结点)相关,而在图形结构中,结点之间的关系可以是任意的,图 中任意两个数据元素之间都可能相关。由此,图的应用极为广泛,特别是近年 来的迅速发展,已渗入到诸如语言学、逻辑学、物理、化学、电讯工程、计算 机科学以及数学的其他分支中。
第五章 系统实现 ...............................................14 5.1 程序执行之前的准备 .........................................14 5.2 主界面 .....................................................14 5.3 游客界面 ...................................................15 5.4 系统用户界面 ...............................................15
1.3 理论技术方案的选取
邻接矩阵存储结构对图的构造操作的实现框架,他根据图 G 的种类调用具 体构造算法。如果 G 是无向图,则构造一个具有 n 个顶点和 e 条边的无向网 G 的时间复杂度是 O(n2+e*n),其中对邻接矩阵 G.arcs 的初始化耗费了 O(n2)的时间。这个存储结构上易于实现课题所需的基本操作,在建立邻接 表或逆邻接表,时间复杂度为(n+e),需要通过查找才能得到顶点图中位置, 时间复杂度为 O(n*e)。

数据结构课程设计报告-公园导游图

数据结构课程设计报告-公园导游图

课程设计报告课程名称数据结构课题名称公园导游图专业计算机科学与技术班级计算机0702学号姓名指导教师2009年10月26日湖南工程学院课程设计任务书任务完成日期2009 年11 月8 日1设计内容与设计要求1.1设计内容1.1.1 算术24游戏演示由系统随机生成4张扑克牌,用户利用扑克牌的数字及运算符号“+”、“—”、“*”、“/”及括号“(”和“)”从键盘上输入一个计算表达式,系统运行后得出计算结果,如果结果等于24,则显示“Congratulation!”,否则显示“Incorrect!”设计思路:从键盘输入中缀表达式,然后将中缀表达式转换为后缀表达式,利用后缀表达式求值。

1.1.2 迷宫探索随机生成一个迷宫图,迷宫大小为N*N,N预定义为常数,修改N的值可以改变迷宫的大小。

用白色表示可走的路,蓝色表示墙壁不可以通过。

系统设计两种运行方式:一种是系统自动探索(用递归方法实现);另一种是由人工操作探索通路。

设计思路:程序首先要考虑迷宫的表示,这是一个二维关系图,所以可选择二维数组来存储。

数组元素只有两种值0和1,分别代表通路和墙壁。

图形的显示可以根据数组元素的值来确定。

如果是人工探索,则依据按键来确定探索物的位置坐标,利用循环语句实现。

如果是系统自动探索,可采用递归算法实现。

1.1.3 二叉树遍历演示演示遍历二叉树的过程,所以首先建立二叉树,并用图形显示出树的形状。

建立的过程是采用前序便利的方法来创建,设计两种生成树的方式:一种是系统随机生成,另一种是人工输入。

考虑到屏幕界面的有限性,限定二叉树不超过5层,最多26个字符,输入字符小数点“.”代表NULL。

初始树为某种颜色的结点,三种情况的遍历采用填充另外一种醒目的颜色,来表示当前遍历的结点,同时显示该结点的访问序号。

同时在遍历的过程中在遍历图形的下方显示出遍历序列。

1.1.4 数组应用按照行优先顺序将用户随机输入的数据建成2维数组并以图形方式逐步显示出来,然后再按照列优先顺序以图形方式逐步输出相应数组。

公园导览图课课程设计

公园导览图课课程设计

公园导览图课课程设计一、教学目标本课程旨在通过公园导览图的学习,让学生掌握公园导览图的基本知识,培养学生读图、用图的能力,提高学生对公园导览图的识别和理解能力,使学生能够运用公园导览图进行公园游览。

1.了解公园导览图的基本要素,如地图比例、图例、指北针等。

2.掌握公园导览图的阅读方法,能够正确识别和使用公园导览图。

3.了解公园导览图的分类,如平面图、立面图、鸟瞰图等。

4.能够使用公园导览图找到指定地点。

5.能够分析公园导览图,了解公园的布局和景点分布。

6.能够制作简单的公园导览图。

情感态度价值观目标:1.培养学生的观察力和想象力,提高学生对公园导览图的兴趣。

2.培养学生合作学习的精神,通过小组讨论和合作完成导览图的制作。

3.培养学生爱护公共设施的意识,学会正确使用和保护公园导览图。

二、教学内容本课程的教学内容主要包括公园导览图的基本知识、阅读方法和制作技巧。

1.公园导览图的基本知识:介绍地图比例、图例、指北针等基本要素。

2.公园导览图的阅读方法:讲解如何正确识别和使用公园导览图,如何找到指定地点和了解公园的布局。

3.公园导览图的制作技巧:教授学生如何制作简单的公园导览图,包括选择纸张、绘制比例尺、标注景点等。

三、教学方法本课程采用多种教学方法,包括讲授法、讨论法、案例分析法和实验法等。

1.讲授法:讲解公园导览图的基本知识和阅读方法。

2.讨论法:分组讨论,让学生分享对公园导览图的理解和制作经验。

3.案例分析法:分析实际案例,让学生学会如何运用公园导览图进行公园游览。

4.实验法:学生动手制作公园导览图,提高学生的实际操作能力。

四、教学资源本课程所需的教学资源包括教材、参考书、多媒体资料和实验设备。

1.教材:提供教材,让学生掌握公园导览图的基本知识和阅读方法。

2.参考书:提供相关参考书籍,丰富学生的知识体系。

3.多媒体资料:制作多媒体课件,生动展示公园导览图的制作和使用过程。

4.实验设备:提供绘图工具和材料,让学生动手制作公园导览图。

某公园导游图

某公园导游图

电子信息工程学系实验报告课程名称:数据结构Array实验项目名称:某公园导游图实验时间:班级:姓名:学号:实验目的:1.掌握图的基本存储方法。

2.掌握有关图的操作算法并用高级语言编程实现;3.熟练掌握求图的最短路径的方法。

4.巩固和加深对各种数据结构的理解。

5.掌握恰当选用数据结构并设计与实际问题相符的算法的能力。

实验环境:一人一台微机,安装windows系统及vc++6.0或TC开发环境。

实验内容及过程:给出一张某公园的导游图(景点不少于10个),游客通过终端询问可知:1.任一景点的相关信息2.从某一景点到另一景点的最短路径实验结果及分析:程序:#include<stdio.h>#define MaxValue 100 /*定义最大值即无穷大用100来代替*/void ADJMATRIX( int A[][7],int n,int e) /*采用邻接矩阵的方法来存储图*/{int i,j,k,weight;for(i=0;i<n;i++)for(j=0;j<n;j++){if(i==j)A[i][j]=0;elseA[i][j]=MaxValue;} /*邻接矩阵赋初值其中顶点到顶点本身路径规定为0*/for(k=0;k<e;k++){scanf("%d,%d,%d",&i,&j,&weight); /*输入一个顶点偶对与权值*/A[i][j]=weight;A[j][i]=weight;}}void SHORTEST_PA TH(int cost[][7],int v,int n, int dist[],int path[7]){ int i,w,u,cout,s[7],j;int min=100; /*在后面找最短路径顶点要用到该值*/for(i=0;i<n;i++){s[i]=0; /*标记数组置0*/dist[i]=cost[v][i]; /*将邻接矩阵第V行元素依次送dist数组*/} /*对数组进行初始化*/s[v]=1;cout=1; /*计数器赋初值1*/path[cout-1]=v+1; /*用数组path来存储经过的路径或说是顶点*/while(cout<n-2){min=100;for(j=0;j<n;j++) /* 该for语句的作用是找到一个与v最近的顶点并用u来标记*/if(s[j]==0&&dist[j]<min&&dist[j]>0){min=dist[j];u=j;}s[u]=1;cout++;path[cout-1]=u+1;for(j=0;j<n;j++) /*根据u更新从v到所有尚未确定最短路径的顶点的路径长度*/{if(s[j]==0&&dist[u]+cost[u][j]<dist[j]&&(!path[u]) )dist[j]=dist[u]+cost[u][j];}}for(j=0;j<cout;j++) /*该for语句的作用是输出从v出发最短路径所经过的顶点*/printf("%d->",path[j]);}void main (){int cost[7][7], dist[7], path[7][7],a,b,c;ADJMA TRIX(cost,7,9) ; /*调用函数ADJMATRIX( int A[][7],int n,int e)生成图的邻接矩阵结构*/for(a=0;a<7;a++){ /*该for语句作用是输出所创建的图——以邻接矩阵输出*/for(b=0;b<7;b++)printf("%-4d",cost[a][b]);printf("\n");}printf("\n\nPlease input the source v:");scanf("%d",&c); /* 控制输入点即源点*/SHORTEST_PA TH(cost,c,7, dist,path); /* 调用函数SHORTEST_PA TH(int cost[][7],int v,int n, int dist[],int path[7])得到最短路径*/getch();}分析:为了便于分析本次试验我采用课本的数据运行结果:其中100表示的是无穷大,运行结果为源点到顶点2的最短路径。

某数据结构课程设计公园导游图

某数据结构课程设计公园导游图

实验四:图(内容:某公园导游图)一、问题描述:公园导游系统:给出一张某公园的导游图,游客通过终端询问可知:从某一景到另一景点的最短路径。

游客从公园大门进入,选一条最佳路线,使游客可以不重复地游览各景点,最后回到出口(出口就在入口旁边) 。

、设计描述:1. 输入导游图的算法(存储方法) .本程序特地设计函数void initgraph() 用于实现键盘输入图的结构;2. 可访问导游图中任一景点的算法.为此设计了函数void vist(GraphMatrix graph) 用于实现访问任一景点的信息;3. 最短路径从一景点到另一景点的算法。

利用floyd 算法-实现每一对景点间的最短路径。

并利用void outgraph() 函数实现显示起始点和终点间的最短路径和其长度;三、程序清单:#include<iostream> using namespace std;#include<stdio.h>#define MAXVEX 100#define MAX 999typedef char VexType;typedef float AdjType;typedef struct {int n;VexType vexs[MAXVEX]; AdjType arcs[MAXVEX][MAXVEX]; } GraphMatrix; GraphMatrix graph;int i, j, k; fOr (i = 0; i < pgraph->n; i++) fOr (j = 0; j <pgraph->n; j++) { if (pgraph->arcs[i][j] != MAX)ppath->nextvex[i][j] = j; else ppath->nextvex[i][j] = -1; ppath->a[i][j] = pgraph->arcs[i][j];}for (k = 0; k < pgraph->n; k++)for (i = 0; i < pgraph->n; i++)for (j = 0; j < pgraph->n; j++) {if ( ppath->a[i][k] >= MAX || ppath->a[k][j] >= MAX ) continue;//定义图结构/* 图的顶点个数 *//* 顶点信息 *//* 边信息 */ //定义一个图 graphtypedef struct {AdjType a[MAXVEX][MAXVEX];int nextvex[MAXVEX][MAXVEX]; } ShortPath; ShortPath path; //定义最短路径ShOrtPath 结构/* 关系矩阵 A ,存放每对顶点间最短路径长度 *//* nextvex[i][j] 存放 vi 到 vj 最短路径上 vi 的后继顶点的下标值*/ //定义路径 pathvOid flOyd(GraphMatrix * pgraph, ShOrtPath * ppath) //flOyd 算法 -用于实现每一对景点间的最短路径if ( ppath->a[i][j] > ppath->a[i][k]+ ppath->a[k][j] ) { ppath->a[i][j] = ppath->a[i][k] + ppath->a[k][j];ppath->nextvex[i][j] = ppath->nextvex[i][k];}}}void outgraph() //out() 函数用于实现显示起始点和终点间的最短路径和其长度{int c,b,i;cout<<endl;CoUtV<"请输入想查找起始点和终点:"; Zz输入要查找起始点和终点(本程序限于编号(int型)) cout<<endl;Cin>>C;Cin>>b;i=path.a[c][b]; ZZ通过path.a[c][b]把路径长度赋给i//输出路径长度 //此处输出路径的第一个编号 //循环顺序输出路径始点和终点之间的景点编号 //再输出路径的最后一个编号 } vOid initgraph() //该函数用于实现键盘输入图的结构{ int i,m,j;printf(" 请输入公园景点的个数: ");//图结点的个数赋给 graph.n sCanf("%d",&m);graph.n=m;fOr(i=0;iVgraph.n;i++)//循环输入结点顶点信息{ Printf("请输入第%i 个景点信息:",i); Zz 为了简明起见此程序结点顶点信息限于字符型Cin>>graph.vexs[i];}Printf("请输入公园的邻接矩阵的信息\n");ZZ 循环输入图的邻接矩阵信息(也就是输入一个二维数组) fOr(i=0;iVgraPh.n;i++)for(j=0;j<graph.n;j++) {printf(" 请输入第 %d 行,第 %d 列的元素 :",i+1,j+1); cin>>graph.arcs[i][j]; }}COutV<"该路径总长为:";cout<<i<<endl;COUtVV"所得路径顺序为";COutVVC;C=path.nextvex[C][b];fOr(;C!=b;C=path.nextvex[C][b])COutVV","VVC;COutVV","VVb;COutVVendl;void vist(GraphMatrix graph) //函数用于实现访问任一景点的信息{ int i;cout<<endl;COUtV<"你想知道哪个景点的信息:";Zz注意输入的是景点的编号cin>>i;COutVVendl;COUtVV"景点信息查询结果为:";COutvVgraPh.vexs[i]; //输出景点信息COutVVendl;}int jud() //用于判断是否继续执行特定的下一步程序{int a;cout<<"还想继续查询?(1 &0)";Cin>>a;return a;}int main(){int i,j; initgraph();floyd(&graph, &path);COutV<"为了验证下面运算结果的方便,for (i = 0; i < graph.n; i++){fOr (j = 0; j V graph.n; j++)printf("%d ", path.nextvex[i][j]);putChar('\n');}COutVVendl;Outgraph(); while(jud())Outgraph(); vist(graph);COutVVendl;while(jud()) vist(graph);COutVVendl;return 0;//initgraph()函数来实现键盘输入图的结构循环输出nextvex[i][j] 数组";//为了验证下面运算结果的方便,循环输出nextvex[i][j] 数组//nextvex[i][j] 存放vi 到vj 最短路径上vi 的后继顶点的下标值//oUtgraPh()函数用于实现显示起始点和终点间的最短路径和其长度//函数用于实现访问任一景点的信息验四:图(内容:某公园导游图).①问题描述给出一张某公园的导游图,游客通过终端询问可知:(1 )从某一景点到另一景点的最短路径。

数据结构课程设计——校园导游图

数据结构课程设计——校园导游图

景德镇陶瓷学院信息工程学院班级:11计科(2)班学号:*************名:**指导老师:李娟、徐星时间:2013年6月27号题目:13*:图(校园导游图)7 :建立二叉树,层序、先序遍历14 :拓扑排序题目一:图(校园导游图)1.1、需求分析:需求:(1)将导游图看作一张带权无向图,顶点表示公园的各个景点,边表示各景点之间的道路,边上的权值表示距离。

为此图选择适当的数据结构。

(2)把各种路径都显示给游客,由游客自己选择游览路线。

(3)画出景点分布图于屏幕上。

分析:完成对整个导游图系统的功能实现,需要对的每一项功能都有清楚的设想和认识,了解并明确每一项功能的实现需要解决的问题,选择正确并且高效的算法把问题逐个解决,最终实现程序的正确调试运行。

有以下设计思路:(1).结合本校的实际情况,选出10个景点;(2).人为手工为选出的10个景点赋上相关信息(名称、代号、简介信息、以及路权等等);(3).根据选出来的10个景点用邻接矩阵存储校园图。

(4).依照景点的相关信息创建校园图。

(5).把纸质上的内容,利用C++编程语言编写查找景点相关信息的程序。

(6).根据人为赋值的路权,迪杰斯特拉算法计算任意两点之间的最短路径。

(7).综上所诉,用一个主函数把这些板块合成,生产一个菜单界面呈现在用户面前。

1.2、设计与实现:选出本校10个景点结合景德镇陶瓷学院实际情况,我选出以下10个景点,从1到10编号:图的初始化由于邻接矩阵特殊的存储方式,它非常便于快速的查找两个顶点之间的边上的权值。

所以,图采用带权的邻接矩阵存储。

决定了图的存储方式后,以华南农业大学10个景点的游览地图作为蓝本,把校园地图抽象化成顶点与边构成的图形式,如图2.2所示,途中数字代表线的权值。

1.3、模块的划分含有四个模块:(1)陶院地图信息(2)陶院景点信息(3)查找两点间最短路径(4)退出模板功能(1)将陶院的地图显示在程序运用上;(2)输入一个景点,运用程序上能够显示该景点的信息;(3)可以给游客提供两个景点的最短路径;(4)给游客提供方便。

公园的导游图

公园的导游图

用C++语言设计一个公园的导游图摘要现实生活中,常常会遇到求最短路径的问题。

本课程设计旨在提供一种解决这类问题的实例,把某一公园的景点与路线抽象成顶点和边,从而构成图,进而解决一系列相关的最短路径,最佳路线等问题。

在课程设计中,系统开发平台为Windows XP,程序设计设计语言采用C++,程序运行平台为Windows 98/2000/XP。

对于求解最短路径,使用了著名的Dijkstra算法。

对于求最佳路径,采用了常用于解决TSP问题的贪心法。

程序通过调试运行,初步实现了设计目标,并且经过适当完善后,这一导游图系统将同样适用于其他公园。

关键词程序设计;数据结构;图;最短路径;Dijkstra算法;TSP问题1 引言现实生活中,常常会遇到求最短路径的问题,本课程设计将把这类问题实例化,把一个公园的景点顶点化、路径边化,建成一个图,再通过比较对图中各边及顶点的关系,实现对公园各个景点进行访问,并能根据要求,求出任意两个顶点的最短路径,还能给出一条依次不重复访问各点的最短路径。

【这部分应写明前人相关的研究成果、理论与实践依据,内容可包括研究的目的、意义、主要方法、范围和背景等。

】随着计算机科学的迅速发展,计算机已深入到揉社会的各个领域,它的应用已不再局限于科学计算,以解决一些数学问题,而且可以解决一些抽象化的具体问题,更多地用于控制,管理及数据处理等非数值计算的处理工作,这便为我们的日常生活提供了很多的方便,譬如说火车售票系统,学生成绩管理,车厢调度等实际问题。

如今程序设计的语言很多,有发展比较完善高级语言,也有最基本的低级语言,然而再好的程序设计也要有一个比较清晰的思路——算法。

为了编写好一个好程序,必须分析待处理对象的特性以及各处理对象之间的关系,于是数据结构便成为我们绝佳的选择。

数据结构是计算机程序设计的重要理论技术基础,它不仅是计算机科学的核心课程,而且已成为其他理工专业的热门选修课。

2程序的功能需求分析2. 1 程序的功能分析一个公园的导游图,至少应该有一个简单的景点分布图,让游客能对公园概况一目了然。

数据结构公园导游

数据结构公园导游

c.arcs[13][22].adj=60; c.arcs[14][20].adj=90; c.arcs[15][21].adj=40;
c.arcs[20][21].adj=60; c.arcs[22][23].adj=60; c.arcs[23][24].adj=60; c.arcs[24][26].adj=100; c.arcs[25][26].adj=90; c.arcs[26][27].adj=90;
3.公园导游问题的设计
图1-1 函数调用图
4.调试分析
图1-2
图1-3
图1-4
图1-5
图1-6
5.小结
数据结构书中的迪杰斯特拉算法只能求出最 短路径中有哪个景点,但无法求出这几个景点的 经过顺序,所以先利用迪杰斯特拉算法记录下某
个顶点求出到最短路径的顺序,然后再比对哪几 个景点是最短路径里所经过的得出最短路径及景 点路过的顺序。
1.课程设计的目的
(1) 熟练使用 C ++语言编写程序,解决实际问 题; (2) 了解并掌握数据结构与算法的设计方法,具备 初步的独立分析和设计能力; (3) 初步掌握软件开发过程的问题分析、系统设 计、程序编码、测试等基本方法和技能; (4) 提高综合运用所学的理论知识和方法独立分析 和解决问题的能力;
c.arcs[2][3].adj=60; c.arcs[3][4].adj=60;
c.arcs[2][8].adj=40; c.arcs[3][6].adj=40; c.arcs[4]
c.arcs[4][5].adj=70; c.arcs[4][9].adj=70; [10].adj=80; c.arcs[4][17].adj=200; c.arcs[5][7].adj=70; c.arcs[6][9].adj=40; c.arcs[7][18].adj=190; c.arcs[8][11].adj=50; c.arcs[9][12].adj=40; c.arcs[10][18].adj=70; c.arcs[11][12].adj=60; c.arcs[11][15].adj=50; c.arcs[12][16].adj=50; c.arcs[13][14].adj=40; c.arcs[14][15].adj=50; c.arcs[15][16].adj=60; c.arcs[16][17].adj=60; c.arcs[17][18].adj=80; c.arcs[18][19].adj=60; c.arcs[11][14].adj=50;

公园导游图课程设计

公园导游图课程设计

公园导游图 课程设计一、课程目标知识目标:1. 学生能够理解公园导游图的基本组成元素,如比例尺、图例、方向标识等;2. 学生能够掌握阅读和使用公园导游图的方法,获取所需信息;3. 学生能够了解公园的基本布局、景点分布及各景点的特色。

技能目标:1. 学生能够运用所学知识,独立完成公园导游图的绘制;2. 学生能够运用导游图,进行实地导游讲解,提升表达和沟通能力;3. 学生能够通过分析导游图,提高空间想象力和逻辑思维能力。

情感态度价值观目标:1. 培养学生对地理学科的兴趣,激发他们探索公园和自然环境的热情;2. 增强学生的环保意识,让他们在游览公园时能够爱护公共设施和环境;3. 培养学生团队协作精神,学会在集体活动中相互帮助和分享。

本课程针对小学四年级学生设计,结合学科特点,注重培养学生的实际操作能力和观察能力。

通过本课程的学习,使学生能够将所学知识运用到实际生活中,提高他们解决实际问题的能力。

同时,课程强调情感态度价值观的培养,使学生在掌握知识技能的同时,树立正确的价值观,增强社会责任感和环保意识。

教学过程中,教师应关注学生的个体差异,因材施教,确保每个学生都能达到课程目标。

二、教学内容本课程以《小学四年级社会与地理》教材中“我们的公园”章节为依据,结合课程目标,组织以下教学内容:1. 公园导游图的基本组成:介绍比例尺、图例、方向标识等元素的作用和识别方法;2. 阅读与使用导游图:教授学生如何根据导游图获取公园景点信息,规划游览路线;3. 公园景点介绍:讲解公园内各景点的特点、历史背景及相关故事;4. 导游图绘制:指导学生运用所学知识,动手绘制公园导游图;5. 实地导游实践:组织学生进行实地导游讲解,培养表达和沟通能力;6. 环保教育:结合公园环境,进行环保意识教育,提高学生的环保素养。

教学内容安排和进度如下:1. 第1课时:介绍公园导游图的基本组成,学习比例尺、图例等元素;2. 第2课时:阅读与使用导游图,了解公园景点信息;3. 第3课时:公园景点介绍,了解各景点特色;4. 第4课时:导游图绘制,动手绘制公园导游图;5. 第5课时:实地导游实践,进行实地讲解;6. 第6课时:环保教育,培养环保意识。

某数据结构课程设计公园导游图

某数据结构课程设计公园导游图

实验四:图(内容:某公园导游图)一、问题描述:公园导游系统:给出一张某公园的导游图,游客通过终端询问可知︰从某一景到另一景点的最短路径。

游客从公园大门进入,选一条最佳路线,使游客可以不重复地游览各景点,最后回到出口(出口就在入口旁边)。

二、设计描述:1.输入导游图的算法(存储方法).本程序特地设计函数void initgraph()用于实现键盘输入图的结构;2.可访问导游图中任一景点的算法.为此设计了函数void vist(GraphMatrix graph)用于实现访问任一景点的信息;3.最短路径从一景点到另一景点的算法。

利用floyd算法-实现每一对景点间的最短路径。

并利用void outgraph()函数实现显示起始点和终点间的最短路径和其长度;三、程序清单:#include<iostream>using namespace std;#include<stdio.h>#define MAXVEX 100#define MAX 999typedef char VexType;.typedef float AdjType;typedef struct //定义图结构{int n; /* 图的顶点个数*/VexType vexs[MAXVEX]; /* 顶点信息*/AdjType arcs[MAXVEX][MAXVEX]; /* 边信息*/} GraphMatrix;GraphMatrix graph; //定义一个图graphtypedef struct //定义最短路径ShortPath结构{AdjType a[MAXVEX][MAXVEX]; /* 关系矩阵A,存放每对顶点间最短路径长度*/int nextvex[MAXVEX][MAXVEX];/* nextvex[i][j]存放vi到vj最短路径上vi的后继顶点的下标值*/ } ShortPath;ShortPath path; //定义路径pathvoid floyd(GraphMatrix * pgraph, ShortPath * ppath) //floyd算法-用于实现每一对景点间的最短路径{int i, j, k;for (i = 0; i < pgraph->n; i++)for (j = 0; j < pgraph->n; j++) {if (pgraph->arcs[i][j] != MAX)ppath->nextvex[i][j] = j;.else ppath->nextvex[i][j] = -1;ppath->a[i][j] = pgraph->arcs[i][j];}for (k = 0; k < pgraph->n; k++)for (i = 0; i < pgraph->n; i++)for (j = 0; j < pgraph->n; j++) {if ( ppath->a[i][k] >= MAX || ppath->a[k][j] >= MAX )continue;if ( ppath->a[i][j] > ppath->a[i][k]+ ppath->a[k][j] ) {ppath->a[i][j] = ppath->a[i][k] + ppath->a[k][j];ppath->nextvex[i][j] = ppath->nextvex[i][k];}}}void outgraph() //out()函数用于实现显示起始点和终点间的最短路径和其长度{int c,b,i;cout<<endl;cout<<"请输入想查找起始点和终点:"; //输入要查找起始点和终点(本程序限于编号(int型))cout<<endl;cin>>c;cin>>b;i=path.a[c][b]; //通过path.a[c][b]把路径长度赋给i.cout<<"该路径总长为:";cout<<i<<endl; //输出路径长度cout<<"所得路径顺序为";cout<<c; //此处输出路径的第一个编号c=path.nextvex[c][b];for(;c!=b;c=path.nextvex[c][b]) //循环顺序输出路径始点和终点之间的景点编号cout<<","<<c;cout<<","<<b; //再输出路径的最后一个编号cout<<endl;}void initgraph() //该函数用于实现键盘输入图的结构{int i,m,j;printf("请输入公园景点的个数:"); //图结点的个数赋给graph.nscanf("%d",&m);graph.n=m;for(i=0;i<graph.n;i++) //循环输入结点顶点信息{printf("请输入第%i个景点信息:",i); //为了简明起见此程序结点顶点信息限于字符型cin>>graph.vexs[i];}printf("请输入公园的邻接矩阵的信息\n");//循环输入图的邻接矩阵信息(也就是输入一个二维数组)for(i=0;i<graph.n;i++).for(j=0;j<graph.n;j++){printf("请输入第%d行,第%d列的元素:",i+1,j+1); cin>>graph.arcs[i][j]; }}void vist(GraphMatrix graph) //函数用于实现访问任一景点的信息{ int i;cout<<endl;cout<<"你想知道哪个景点的信息:"; //注意输入的是景点的编号cin>>i;cout<<endl;cout<<"景点信息查询结果为:";cout<<graph.vexs[i]; //输出景点信息cout<<endl;}int jud() //用于判断是否继续执行特定的下一步程序{int a;cout<<"还想继续查询?(1&0)";cin>>a;return a;}int main().{int i,j;initgraph(); //initgraph()函数来实现键盘输入图的结构floyd(&graph, &path);cout<<"为了验证下面运算结果的方便,循环输出nextvex[i][j]数组";for (i = 0; i < graph.n; i++){for (j = 0; j < graph.n; j++) //为了验证下面运算结果的方便,循环输出nextvex[i][j]数组printf("%d ", path.nextvex[i][j]); //nextvex[i][j]存放vi到vj最短路径上vi的后继顶点的下标值putchar('\n');}cout<<endl;outgraph();while(jud())outgraph(); //outgraph()函数用于实现显示起始点和终点间的最短路径和其长度vist(graph); //函数用于实现访问任一景点的信息cout<<endl;while(jud())vist(graph);cout<<endl;return 0;}.验四:图(内容:某公园导游图)①.问题描述给出一张某公园的导游图,游客通过终端询问可知:(1)从某一景点到另一景点的最短路径。

数据结构课程设计故宫导游(最短路径)【范本模板】

数据结构课程设计故宫导游(最短路径)【范本模板】

数学与计算机学院课程设计说明书课程名称: 数据结构与算法课程设计课程代码: 6014389 题目:故宫导游咨询年级/专业/班: 学生姓名: 学号: 开始时间: 2011 年 12 月 9 日完成时间: 2011 年 12 月 23 日课程设计成绩:学习态度及平时成绩(30)技术水平与实际能力(20)创新(5)说明书(计算书、图纸、分析报告)撰写质量(45)总分(100)指导教师签名:年月日目录引言................................................................ - 4 - 1、需求分析........................................................... - 4 -1。

1任务与分析.................................................... - 4 - 2 概要设计............................................................ - 5 -2。

1 ADT描述...................................................... - 5 - 2。

2程序模块结构.................................................. - 6 - 2。

3 各功能模块.................................................. - 6 - 3 详细设计........................................................... - 7 -3。

1结构体定义.................................................... - 7 - 3。

公园导游图课程设计

公园导游图课程设计

课程设计题目公园导游图专业网络工程班级1班姓名尹颖指导老师孙菁2014 年12 月28 日课程设计(论文)课程设计任务书2014~2015学年第 1学期学生姓名:尹颖吴东旭许益强葛溆李永康朱世豪专业班级: 12网络工程指导教师:孙菁一、课程设计题目:公园导游图二、课程设计内容给出一张某公园的导游图,游客通过终端询问可知:从某一景点到另一景点的最短路径。

游客从公园大门进入,选一条最佳路线,使游客可以不重复地游览各景点,最后回到出口(出口就在入口旁边)。

三、进度安排1.初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;2.完成最低要求:建立一个文件,包括5个景点情况,能完成遍历功能;3.进一步要求:进一步扩充景点数目,画出景点图,有兴趣的同学可以自己扩充系统功能。

四、基本要求1. 界面友好,函数功能要划分好2. 总体设计应画一流程图3. 程序要加必要的注释4. 要提供程序测试方案5. 程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值的。

目录摘要1 问题描述 (3)1.1图、无向图 (3)1.1.1图的存储结构 (3)1.1.2 图的邻接矩阵表示法 (3)1.2算最短路径 (4)1.3无向图遍历 (4)1.4广度优先搜索 (4)2.系统分析 (5)2.1系统流程图 (5)3 系统设计 (5)3.1主要数据结构 (6)3.2主要函数说明 (6)3.3主要算法说明 (6)3.3.1数组表示法 (6)3.3.2F LOYD算法 (6)4 心得体会 (7)附录一:源程序 (8)附录三:参考文献························································错误!未定义书签。

公园导游图课程设计

公园导游图课程设计

公园导游图课程设计一、课程目标知识目标:1. 学生能理解并掌握公园导游图的基本构成要素,如比例尺、图例、方向标识等。

2. 学生能通过观察和分析,识别公园内的主要景点和设施,并了解其功能及特点。

3. 学生能够运用地图知识,描述公园内各景点的相对位置关系。

技能目标:1. 培养学生运用地图进行空间定位和信息提取的能力。

2. 培养学生通过观察、分析、归纳等方法,独立完成公园导游图的制作。

3. 培养学生运用所学知识,解决实际问题的能力。

情感态度价值观目标:1. 培养学生对地理学科的兴趣和热爱,增强对公园环境的保护意识。

2. 培养学生团队协作、共同探究的精神,提高沟通和表达能力。

3. 培养学生尊重他人意见,学会倾听、理解和接纳不同的观点。

课程性质:本课程为地理学科教学实践活动,结合学生所在年级特点,以培养学生实际应用能力为主。

学生特点:学生具备一定的地图知识基础,对公园环境有一定的认知,但空间想象力和实际操作能力有待提高。

教学要求:教师需引导学生将所学知识运用到实际情境中,注重培养学生的动手操作能力和解决问题的能力。

在教学过程中,关注学生的个体差异,鼓励学生积极参与,充分调动学生的主观能动性。

通过课程学习,使学生达到课程目标,为后续的地理学习奠定基础。

二、教学内容1. 公园导游图的基本知识:- 比例尺的认识与应用- 图例的识别与使用- 方向标识的辨别方法- 空间定位与距离估算2. 公园景点与设施分析:- 主要景点的分布与特点- 公园设施的类别与功能- 景点间的相对位置关系3. 公园导游图的制作:- 导游图的绘制方法与步骤- 比例尺、图例、方向标识的合理运用- 景点与设施的标注技巧4. 教学大纲安排:- 第一课时:公园导游图的基本知识学习- 第二课时:公园景点与设施分析- 第三课时:公园导游图的制作实践5. 教材章节关联:- 《地理》教材第三章:地图的应用- 《地理》教材第四章:城市与旅游景点教学内容注重科学性和系统性,结合课程目标,确保学生能够掌握公园导游图的相关知识。

公园的导游图课程设计

公园的导游图课程设计

公园的导游图课程设计一、课程目标知识目标:1. 学生能理解并描述公园导游图的基本构成元素,包括地图比例尺、方向指示、景点标识等。

2. 学生能够识别并解读公园导游图上的不同符号和颜色所代表的意义。

3. 学生能够掌握使用导游图查找公园内特定景点和设施的方法。

技能目标:1. 学生培养空间定位和方向识别能力,能够利用导游图在公园中进行定位和导航。

2. 学生通过小组合作,能够设计并绘制出简单的公园导游图,展示必要的信息。

3. 学生能够运用地图阅读技巧,分析公园导游图上的信息,规划出合理的游览路线。

情感态度价值观目标:1. 培养学生对地理信息的兴趣,激发他们探索周围环境的热情。

2. 增强学生的环境保护意识,通过了解公园内的自然和人文景观,培养尊重和爱护公共环境的责任感。

3. 通过团队协作活动,学生学会相互尊重和沟通,培养合作精神和集体荣誉感。

本课程针对小学四年级学生设计,结合他们好奇心强、动手能力逐渐增强的特点,旨在通过公园导游图的学习,使学生在实践中掌握地理知识和地图技能,同时培养他们的环境意识和团队协作能力。

课程目标旨在具体、可衡量,确保学生能够明确学习成果,并为后续的教学设计和评估提供清晰的方向。

二、教学内容本章节教学内容依据课程目标,围绕公园导游图的制作与应用展开。

主要包括以下几部分:1. 导游图的基本知识:- 地图的比例尺、方向、图例等基本要素;- 导游图的设计原则和注意事项。

2. 公园导游图的认识与应用:- 识别导游图上的景点、设施及其符号;- 学会使用导游图查找目标地点和规划游览路线。

3. 制作简单的公园导游图:- 收集公园相关信息,如景点介绍、设施分布等;- 运用所学知识,小组合作绘制导游图,展示必要信息。

4. 教学内容的安排与进度:- 第一课时:介绍导游图的基本知识和设计原则;- 第二课时:认识公园导游图,学习解读和查找信息;- 第三课时:分组进行实地考察,收集资料;- 第四课时:小组合作绘制导游图,展示成果。

公园导游图课设1

公园导游图课设1

课程设计报告课程名称数据结构课题名称公园导游图专业计算机科学与技术班级计算机0702学号200703010235姓名蔡鄂湘指导教师陈淑红李杰君李珍辉2009年10月26日湖南工程学院课程设计任务书课程名称数据结构课题公园导游图专业班级计算机0702学生姓名蔡鄂湘学号200703010235指导老师陈淑红李杰君李珍辉审批任务书下达日期2009 年10 月8 日任务完成日期2009 年11 月8 日1设计内容与设计要求1.1设计内容1.1.9 公园导游图给出一张某公园的导游图,游客通过终端询问可知:从某一景点到另一景点的最短路径。

游客从公园大门进入,选一条最佳路线,使游客可以不重复地游览各景点,最后回到出口(出口就在入口旁边)。

要求用图示展示最佳路径。

1.2 选题方案:所选题目根据学号确定,学号模9加1,即(学号%9+1)。

如你的学号为12,则所选题目号为:12%9+1=(题目4)。

注意,所有的课题都要求用图形方式演示步骤和结果。

有兴趣的同学可以自己针对数据结构课程中所讲算法来设计一个演示过程的算法,但要预先告知老师,经过审批,方可确定课题。

1.3设计要求:1.3.1 课程设计报告规范(1)需求分析a.程序的功能。

b.输入输出的要求。

(2)概要设计a.程序由哪些模块组成以及模块之间的层次结构、各模块的调用关系;每个模块的功能。

b.课题涉及的数据结构和数据库结构;即要存储什么数据,这些数据是什么样的结构,它们之间有什么关系等。

(3)详细设计a.采用C语言定义相关的数据类型。

b.写出各模块的类C码算法。

c.画出各函数的调用关系图、主要函数的流程图。

(4)调试分析以及设计体会a.测试数据:准备典型的测试数据和测试方案,包括正确的输入及输出结果和含有错误的输入及输出结果。

b.程序调试中遇到的问题以及解决问题的方法。

c.课程设计过程经验教训、心得体会。

(5)使用说明用户使用手册:说明如何使用你编写的程序,详细列出每一步的操作步骤。

公园的导游图课程设计

公园的导游图课程设计

公园的导游图课程设计一、教学目标本课程旨在通过公园导游图的学习,让学生掌握以下知识目标:1.了解导游图的基本组成部分及其含义。

2.掌握导游图的阅读方法及技巧。

3.熟悉公园的主要景点及其特色。

4.培养学生独立阅读导游图的能力。

5.培养学生运用导游图进行公园游览规划的能力。

6.培养学生通过导游图进行信息提取和表达能力。

情感态度价值观目标:1.培养学生对公园导游图的兴趣,提高他们对公共信息的关注度。

2.培养学生合作学习的精神,增强团队意识。

3.培养学生爱护公共设施,维护公共秩序的价值观。

二、教学内容本课程的教学内容主要包括以下几个部分:1.导游图的基本组成部分及其含义:如地图、指向标、图例、比例尺等。

2.导游图的阅读方法及技巧:如如何快速找到目的地、如何判断方向等。

3.公园的主要景点及其特色:通过导游图了解公园的历史、文化、自然景观等。

4.实践练习:学生分组进行导游图的阅读和应用,设计公园游览路线。

三、教学方法为了提高教学效果,本课程将采用以下教学方法:1.讲授法:教师讲解导游图的基本知识和阅读技巧。

2.讨论法:学生分组讨论导游图的应用场景和实际操作。

3.案例分析法:分析具体公园导游图,引导学生思考和解决问题。

4.实验法:学生分组设计导游图,进行实际应用和反馈。

四、教学资源为了支持教学内容的实施,我们将准备以下教学资源:1.教材:提供相关导游图知识的教材或教辅材料。

2.参考书:推荐学生阅读相关的公园导游图书籍。

3.多媒体资料:制作课件、演示文稿等,以图文并茂的形式展示教学内容。

4.实验设备:提供公园导游图设计所需的材料和工具。

五、教学评估本课程的评估方式包括以下几个方面:1.平时表现:评估学生在课堂上的参与度、提问回答等情况,占总评的20%。

2.作业:评估学生完成作业的质量与速度,占总评的30%。

3.考试:期末进行一次闭卷考试,测试学生的导游图知识和应用能力,占总评的50%。

评估方式力求客观、公正,全面反映学生的学习成果。

公园的导游图

公园的导游图

用C++语言设计一个公园的导游图摘要现实生活中,常常会遇到求最短路径的问题。

本课程设计旨在提供一种解决这类问题的实例,把某一公园的景点与路线抽象成顶点和边,从而构成图,进而解决一系列相关的最短路径,最佳路线等问题。

在课程设计中,系统开发平台为Windows XP,程序设计设计语言采用C++,程序运行平台为Windows 98/2000/XP。

对于求解最短路径,使用了著名的Dijkstra算法。

对于求最佳路径,采用了常用于解决TSP问题的贪心法。

程序通过调试运行,初步实现了设计目标,并且经过适当完善后,这一导游图系统将同样适用于其他公园。

关键词程序设计;数据结构;图;最短路径;Dijkstra算法;TSP问题1 引言现实生活中,常常会遇到求最短路径的问题,本课程设计将把这类问题实例化,把一个公园的景点顶点化、路径边化,建成一个图,再通过比较对图中各边及顶点的关系,实现对公园各个景点进行访问,并能根据要求,求出任意两个顶点的最短路径,还能给出一条依次不重复访问各点的最短路径。

【这部分应写明前人相关的研究成果、理论与实践依据,内容可包括研究的目的、意义、主要方法、范围和背景等。

】随着计算机科学的迅速发展,计算机已深入到揉社会的各个领域,它的应用已不再局限于科学计算,以解决一些数学问题,而且可以解决一些抽象化的具体问题,更多地用于控制,管理及数据处理等非数值计算的处理工作,这便为我们的日常生活提供了很多的方便,譬如说火车售票系统,学生成绩管理,车厢调度等实际问题。

如今程序设计的语言很多,有发展比较完善高级语言,也有最基本的低级语言,然而再好的程序设计也要有一个比较清晰的思路——算法。

为了编写好一个好程序,必须分析待处理对象的特性以及各处理对象之间的关系,于是数据结构便成为我们绝佳的选择。

数据结构是计算机程序设计的重要理论技术基础,它不仅是计算机科学的核心课程,而且已成为其他理工专业的热门选修课。

2程序的功能需求分析2. 1 程序的功能分析一个公园的导游图,至少应该有一个简单的景点分布图,让游客能对公园概况一目了然。

公园导游图——精选推荐

公园导游图——精选推荐

公园导游程序1.问题描述给出一张某公园的导游图,游客通过运行我们编写的程序并输入起始和终止景点可知:(1) 从某一景点到另一景点的最短路径。

(用Dijkstra算法)(2)游客从公园大门进入,选一条最短最佳路线,使游客可以不重复地游览各景点,最后回到出口(出口就在入口旁边出)。

(最短最佳路线方法:用深度遍历算法实现由入口开始遍历所有景点的最短路径,再由截止景点为起点用Dijkstra算法实现从截止景点到出口的最短路径)下面是一张示例图:50最佳最短路经:深度遍历:0——1——2——4——3,权值为130;从3到出口0的最短路径: 3——0,权值为30;最短路径总权值为130+30=160。

两景点间最短路径:(以景点1到各景点为例)1——0 途径( ) 权值:101——2 途径( ) 权值:501——3 途径(0) 权值:401——4 途径(2) 权值:602.要求将导游图看作一张带权无向图(即:一个网络),顶点表示公园的各个景点,边表示各个景点之间的道路,边上的权值表示距离。

写一个类描述该网络,并为该类设计适当的成员变量与成员函数。

3.实现提示(1)第一问实际上是最短路径问题,如果有几条路径长度相同,可选择途经景点较少的路径提供给游客。

(2)第二问可采用深度优先搜索,如果有多种路径可选择,则选择带权路径最小的路线提供给游客。

4.选作内容以上问题的界面为文本界面,给出游客结果时用文本显示。

可以进一步采用GUI界面,在类成员里设计负责绘制导游路径的功能模块。

以下给出类的设计:const int NumVertices=8; //图中最大顶点个数,实际意义为公园景点个数, //由设计者根据所建模型定义,不可少于8个景点。

class ParkGraph //对公园景点建模为图,并设计恰当的类{private:float Edge[NumVertics][NumVertics];//图的邻接矩阵,也即各景点之间的距离(权重)float dist[NumVertics];//存放从顶点0到其它各顶点的最短路径长度 ,顶点0即为公园入口int path[NumVertics];//存放在最短路径上该顶点的前一顶点的顶点号int S[NumVertics];//已求得的在最短路径上的顶点的顶点号int coordinates[2][NumVertics];//各景点的坐标,用于实现扩展功能:实现GUI界面public:void ShortestPath(int,int);//用Dijkstra算法实现从公园入口开始的最短路径搜索功能void DFS();void DFS(int,int);//重载的DFS成员函数采用递归结构实现深度优先搜索void GUI();//此成员函数实现图形用户界面}//ParkGraph是一个具有n个顶点的带权无向图,作为对公园中n个景点的建模//各边上的权值有Edge[i][j]给出,作为对景点之间的距离的建模;//构造函数完成模型的建立,成员函数实现所需功能。

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

实验四:图(内容:某公园导游图)
一、问题描述:
公园导游系统:给出一张某公园的导游图,游客通过终端询问可知︰从某一景到另一景点的最短路径。

游客从公园大门进入,选一条最佳路线,使游客可以不重复地游览各景点,最后回到出口(出口就在入口旁边)。

二、设计描述:
1.输入导游图的算法(存储方法).本程序特地设计函数void initgraph()用于实现键盘输入图的结构;
2.可访问导游图中任一景点的算法.为此设计了函数void vist(GraphMatrix graph)用于实现访问任一景点的信息;
3.最短路径从一景点到另一景点的算法。

利用floyd算法-实现每一对景点间的最短路径。

并利用void outgraph()函数实现显示起始点和终点间的最短路径和其长度;
三、程序清单:
#include<iostream>
using namespace std;
#include<stdio.h>
#define MAXVEX 100
#define MAX 999
typedef char VexType;
typedef float AdjType;
typedef struct //定义图结构
{
int n; /* 图的顶点个数 */
VexType vexs[MAXVEX]; /* 顶点信息 */
AdjType arcs[MAXVEX][MAXVEX]; /* 边信息 */
} GraphMatrix;
GraphMatrix graph; //定义一个图graph
typedef struct //定义最短路径ShortPath结构
{
AdjType a[MAXVEX][MAXVEX]; /* 关系矩阵A,存放每对顶点间最短路径长度 */
int nextvex[MAXVEX][MAXVEX];
/* nextvex[i][j]存放vi到vj最短路径上vi的后继顶点的下标值 */ } ShortPath;
ShortPath path; //定义路径path
void floyd(GraphMatrix * pgraph, ShortPath * ppath) //floyd算法-用于实现每一对景点间的最短路径
{
int i, j, k;
for (i = 0; i < pgraph->n; i++)
for (j = 0; j < pgraph->n; j++) {
if (pgraph->arcs[i][j] != MAX)
ppath->nextvex[i][j] = j;
else ppath->nextvex[i][j] = -1;
ppath->a[i][j] = pgraph->arcs[i][j];
}
for (k = 0; k < pgraph->n; k++)
for (i = 0; i < pgraph->n; i++)
for (j = 0; j < pgraph->n; j++) {
if ( ppath->a[i][k] >= MAX || ppath->a[k][j] >= MAX )
continue;
if ( ppath->a[i][j] > ppath->a[i][k]+ ppath->a[k][j] ) {
ppath->a[i][j] = ppath->a[i][k] + ppath->a[k][j];
ppath->nextvex[i][j] = ppath->nextvex[i][k];
}
}
}
void outgraph() //out()函数用于实现显示起始点和终点间的最短路径和其长度{
int c,b,i;
cout<<endl;
cout<<"请输入想查找起始点和终点:"; //输入要查找起始点和终点(本程序限于编号(int型))cout<<endl;
cin>>c;
cin>>b;
i=path.a[c][b]; //通过path.a[c][b]把路径长度赋给i
cout<<"该路径总长为:";
cout<<i<<endl; //输出路径长度
cout<<"所得路径顺序为";
cout<<c; //此处输出路径的第一个编号
c=path.nextvex[c][b];
for(;c!=b;c=path.nextvex[c][b]) //循环顺序输出路径始点和终点之间的景点编号
cout<<","<<c;
cout<<","<<b; //再输出路径的最后一个编号
cout<<endl;
}
void initgraph() //该函数用于实现键盘输入图的结构
{
int i,m,j;
printf("请输入公园景点的个数:"); //图结点的个数赋给graph.n
scanf("%d",&m);
graph.n=m;
for(i=0;i<graph.n;i++) //循环输入结点顶点信息
{
printf("请输入第%i个景点信息:",i); //为了简明起见此程序结点顶点信息限于字符型
cin>>graph.vexs[i];
}
printf("请输入公园的邻接矩阵的信息\n");//循环输入图的邻接矩阵信息(也就是输入一个二维数组)for(i=0;i<graph.n;i++)
for(j=0;j<graph.n;j++)
{
printf("请输入第%d行,第%d列的元素:",i+1,j+1); cin>>graph.arcs[i][j];
}
}
void vist(GraphMatrix graph) //函数用于实现访问任一景点的信息
{ int i;
cout<<endl;
cout<<"你想知道哪个景点的信息:"; //注意输入的是景点的编号
cin>>i;
cout<<endl;
cout<<"景点信息查询结果为:";
cout<<graph.vexs[i]; //输出景点信息
cout<<endl;
}
int jud() //用于判断是否继续执行特定的下一步程序
{int a;
cout<<"还想继续查询?(1&0)";
cin>>a;
return a;
}
int main()
{
int i,j;
initgraph(); //initgraph()函数来实现键盘输入图的结构
floyd(&graph, &path);
cout<<"为了验证下面运算结果的方便,循环输出nextvex[i][j]数组";
for (i = 0; i < graph.n; i++)
{
for (j = 0; j < graph.n; j++) //为了验证下面运算结果的方便,循环输出nextvex[i][j]数组
printf("%d ", path.nextvex[i][j]); //nextvex[i][j]存放vi到vj最短路径上vi的后继顶点的下标值 putchar('\n');
}
cout<<endl;
outgraph();
while(jud())
outgraph(); //outgraph()函数用于实现显示起始点和终点间的最短路径和其长度
vist(graph); //函数用于实现访问任一景点的信息
cout<<endl;
while(jud())
vist(graph);
cout<<endl;
return 0;
}
验四:图(内容:某公园导游图)
①.问题描述
给出一张某公园的导游图,游客通过终端询问可知:
(1)从某一景点到另一景点的最短路径。

(2)游客从公园大门进入,选一条最佳路线,使游客可以不重复地游览景点,最后回到出口(出口就在入口处旁边)。

②. 要求
将导游图看作一张带权无向图,顶点表示公园的各个景点,边表示各景点之间的道路,边上的权值给游客。

③.实现提示
(1)第一问实际是最短路径问题,如果有几条路径长度相同,可选择途径景点较少的路径提供给游客。

(2)第二问可采用深度优先搜索,如果有多种路径可选择,则选择带权路径最小的路线提供给游客。

④.选做内容
可以把各种路径都显示给游客,由游客自己选择游览路线。

相关文档
最新文档