大班阅读:有趣的导游图(5篇模版)

时间:2019-05-12 11:59:14下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《大班阅读:有趣的导游图》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《大班阅读:有趣的导游图》。

第一篇:大班阅读:有趣的导游图

大班阅读:有趣的导游图

时间: 2012-9-10 作者: 张丽华 单位:常州市红溪实验幼儿园 来源:早期教育

活动目标

1.认识几种生活标志,学习阅读导游图上的多种信息。

2.乐于尝试解决问题,能与同伴合作规划游览线路。

3.尝试自主阅读“淹城野生动物园”的导游图,感受导游图的方便与实用。活动准备

动物园导游图大图一张,小组操作用的中图三张:“淹城野生动物园”导游图18份;进口、出口、售票处、问讯处、医务室、火车站、餐厅、厕所标志各一份;写有1~6数字的小旗子三份。

活动过程

一、谈话引出话题

师:今天,老师带来了一张跟动物有关的图,我们一起来看一看。

二、出示动物园导游图大图,阅读各种信息

1.幼儿运用已有生活经验读图。师:看看图上有什么?图上用什么来表示动物的?为什么又画动物图像又写文字呢?(又有图像又有文字能让更多的人读懂)图上有这么多动物,这是哪里啊?(动物园)

2.认识几种生活标志。师:除了动物,你还看到了什么?(进口、出口、售票处、问讯处、医务室等标志。幼儿看到哪种标志教师就出示该标志在黑板上,先让幼儿说说这种标志是什么意思,然后了解标志的名称,再请幼儿到大导游图上找到该标志。)这张图告诉我们这么多信息,这是一张什么图?(地图)

3.幼儿尝试在导游图上找目的地。师:(1)动物园的地图有什么用呢?(帮助大家又快又准地找到要去的地方)(2)动物园这么多动物,你最想看什么动物?请个别幼儿上来找到一个自己最想看的动物场馆并指出游览线路。(3)请幼儿找出三个游览景点,规划游览线路,说说先到哪里,再到哪里,最后到哪里,为什么要按这样的顺序游玩。

教师小结:孩子们,正像你们说的一样,动物园的地图中藏着很多既有趣又有用的信息,它可以让人们又快又准确地找到想去的地方,不走弯路,节约时间。这样把游览景点画出来方便大家的地图叫导游图。你们见过导游图吗?在哪里见过?

三、分组操作:规划游览线路,自主阅读导游图

1.幼儿自主阅读“淹城野生动物园”导游图。每人一份导游图,自主阅读,看看导游图上有哪些信息,跟黑板上的大图是否一样,有哪些不一样的东西,去过动物园的小朋友可以找一找上次玩了哪几个地方,边看图可以边跟旁边的好朋友讨论讨论。

2.请一名幼儿上来讲讲自己是怎样阅读的,发现了哪些跟大图上不一样的东西,跟大家交流分享。

3.幼儿分成三组合作规划游览线路。要求:首先,每人在动物园导游图上找一个自己最想去的地方,然后大家商量:第一站去哪里?第二站去哪里?第三四五六站去哪里?最后把写有1、2、3、4、5、6的小旗子按先后顺序贴在相应的景点,检查一下线路是不是合理。

4.评价小组操作情况。从三组中选一张小组规划的线路图贴到黑板上,请一名代表上来介绍是怎样规划的,为什么这样规划,老师简单点评。

四、迁移经验,鼓励幼儿关注生活中的导游图

师:今天我们阅读了导游图,还小组合作规划游览线路,我们知道了导游图不仅很有趣而且很实用,它能帮助大家又快又准确地找到自己想去的地方。在各个景点都有这样的导游图,以后你们出去游玩时就可以利用今天学到的方法阅读导游图,让它为你们服务。

第二篇:幼儿园大班语言课教案《有趣的导游图》及教学反思

《大班语言课教案《有趣的导游图》含反思》这是优秀的大班语言教案文章,希望可以对您的学习工作中带来帮助!

活动目标

1.认识几种生活标志,学习阅读导游图上的多种信息。

2.乐于尝试解决问题,能与同伴合作规划游览线路。

3.尝试自主阅读“野生动物园”的导游图,感受导游图的方便与实用。

4.教幼儿养成细心、认真的学习态度。

活动准备

动物园导游图大图一张,小组操作用的中图三张:“野生动物园”导游图18份;进口、出口、售票处、问讯处、医务室、火车站、餐厅、厕所标志各一份;写有1~6数字的小旗子三份。

活动过程

一、谈话引出话题

师:今天,老师带来了一张跟动物有关的图,我们一起来看一看。

二、出示动物园导游图大图,阅读各种信息

1.幼儿运用已有生活经验读图。师:看看图上有什么?图上用什么来表示动物的?为什么又画动物图像又写文字呢?(又有图像又有文字能让更多的人读懂)图上有这么多动物,这是哪里啊?(动物园)

2.认识几种生活标志。师:除了动物,你还看到了什么?(进口、出口、售票处、问讯处、医务室等标志。幼儿看到哪种标志教师就出示该标志在黑板上,先让幼儿说说这种标志是什么意思,然后了解标志的名称,再请幼儿到大导游图上找到该标志。)这张图告诉我们这么多信息,这是一张什么图?(地图)

3.幼儿尝试在导游图上找目的地。

师:(1)动物园的地图有什么用呢?(帮助大家又快又准地找到要去的地方)

(2)动物园这么多动物,你最想看什么动物?请个别幼儿上来找到一个自己最想看的动物场馆并指出游览线路。

(3)请幼儿找出三个游览景点,规划游览线路,说说先到哪里,再到哪里,最后到哪里,为什么要按这样的顺序游玩。

教师小结:孩子们,正像你们说的一样,动物园的地图中藏着很多既有趣又有用的信息,(教案出自:.快思教案网)它可以让人们又快又准确地找到想去的地方,不走弯路,节约时间。这样把游览景点画出来方便大家的地图叫导游图。你们见过导游图吗?在哪里见过?

三、分组操作:规划游览线路,自主阅读导游图

1.幼儿自主阅读“野生动物园”导游图。每人一份导游图,自主阅读,看看导游图上有哪些信息,跟黑板上的大图是否一样,有哪些不一样的东西,去过动物园的小朋友可以找一找上次玩了哪几个地方,边看图可以边跟旁边的好朋友讨论讨论。

2.请一名幼儿上来讲讲自己是怎样阅读的,发现了哪些跟大图上不一样的东西,跟大家交流分享。

3.幼儿分成三组合作规划游览线路。要求:首先,每人在动物园导游图上找一个自己最想去的地方,然后大家商量:第一站去哪里?第二站去哪里?第三四五六站去哪里?最后把写有1、2、3、4、5、6的小旗子按先后顺序贴在相应的景点,检查一下线路是不是合理。

4.评价小组操作情况。从三组中选一张小组规划的线路图贴到黑板上,请一名代表上来介绍是怎样规划的,为什么这样规划,老师简单点评。

四、迁移经验,鼓励幼儿关注生活中的导游图

师:今天我们阅读了导游图,还小组合作规划游览线路,我们知道了导游图不仅很有趣而且很实用,它能帮助大家又快又准确地找到自己想去的地方。在各个景点都有这样的导游图,以后你们出去游玩时就可以利用今天学到的方法阅读导游图,让它为你们服务。

教学反思:

今天上了一节绘本课《七只猴子去旅行》我是以图片导入的,让孩子们观察图片上的标志,并说说是什么标志,说出这个标志所反映出来的是什么意思。孩子们都积极踊跃的回答,令我意外的是他们居然都认识这些标志,而且说的特别好。于是我就引出了今天的故事:“有几只小猴子们要出去旅行,在旅行的途中他们见到了许多标志,让我们一起去看看吧!首先让幼儿看首页,说出故事名称和故事的主人公。然后观察每一幅图,让幼儿说说在图中看到了什么?发生了什么事情?孩子们都积极的回答问题。也了解到每个标志的意思。看完图之后,让幼儿说一说从这个故事里学到了什么?孩子们说要遵守规则。这节课我觉得不足的地方是虽然孩子们回答问题很积极,但是几乎每次都是那些孩子,对于不爱发言的孩子我更应该去关注他们,去引导他们,不要一节课回答问题的都是那些人,让每个孩子都有机会发言。在最后的时候没有对孩子说学到了什么而去总结,整节课流程可以,但是可以在某些地方加点环节,比如小猴摘花,可以让孩子们到前面去表演。最后应该延伸一下,还有哪些是我们要遵守的规则,比如交通规则,上课时,做游戏时要遵守什么规则。对于绘本阅读,应该多研究。多学习,让孩子能快乐的学,在学中玩,玩中学。

大班语言课教案《有趣的导游图》含反思这篇文章共5190字。

第三篇:旅游区导游图

旅游区导游图

题目内容: 问题描述:

设某个旅游区共有n个旅游景点(n≥10),每个旅游景点都和相邻的m个旅游景点(m≥2,m

以(Vi ,Vj ,d)的形式从键盘输入建立该旅游区的旅游景点图,其中:Vi和Vj表示两个不同的旅游景点,d表示这两个景点之间的道路距离;该旅游景点图采用邻接链表存储结构。实现要求:

⑴ 旅游景点图的输出:分别以邻接矩阵、邻接链表的方式输出该旅游景点图。⑵ 相邻景点查询:假设对于每个景点,设置有简易的信息查询,要求能给出与该景点相邻的所有景点(有直接的道路相通)及对应的距离。

⑶ 景点路线查询:假设对于每个景点,设置有景点路线查询,要求能给出从该景点出发到任一其它景点的最短简单路径及距离。

⑷ 景点路线综合查询:对于该旅游区的任意两个景点,找出它们之间的最短简单路径及距离。

⑸ 最佳旅游路线确定:假设该旅游区的入口也是出口,请确定一条最佳的旅游线路,该线路必须经过所有的旅游景点(有些景点可以重复经过)且走的路最短。⑹ 设计一个菜单,上述操作要求都作为菜单中的主要菜单项。

下: ································

#include“stdio.h” #include“malloc.h” #include “string.h” #define INFINITY

32767

/* 图的最大权值,32767是整数表示的最大值*/ #define MAX_VEX 30

/* 最大顶点数目

*/

#define MAX_VALUE 999999999

typedef int InfoType;typedef char VexType;typedef enum{DG=1, AG=2, WDG=3,WAG=4}GraphKind;/*枚举常量定义旅游景点对应的图类型*/

typedef struct Path { int vertex[MAX_VEX];int value;int count;}GPath;

typedef struct MGraph { char vexs[MAX_VEX];

/*存放图的邻接矩阵的的顶点,顶点向量

*/ int arcs[MAX_VEX][MAX_VEX];

/*存放图的邻接矩阵的边

*/ int vexnum,arcnum;

/*图的当前顶点数和弧数

*/ }MGraph;

/*图的邻接链表转换为矩阵后,图的结构定义 */

/*图的邻接矩阵存储结构中结点结构体的定义*/ //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// typedef struct Linknode { char adjvex;

/*邻接点在头结点数组中的位置(邻接边的弧头顶点序号)*/ InfoType info;

/*与边或弧相关的信息, 如权值

*/ struct Linknode *nextarc;

/*指向下一个表结点

*/ }LinkNode;

/*邻接边单链表的结点结构体

*/ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// typedef struct VexNode { char data;

/*数据域存储顶点信息

*/ int indegree;

/*顶点的度, 有向图是入度或出度或没有

*/ LinkNode *firstarc;

/*链域指向第一个表结点(邻接边头指针)*/ }VexNode;

/*顶点结点类型定义

*/ //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// typedef struct {

GraphKind kind;

/*图的种类标志

*/

int vexnum;

/*顶点个数

*/ VexNode AdjList[MAX_VEX];

/*邻接表数组

*/ }ALGraph;

/*图的结构定义

*/

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// typedef struct { VexType vex1, vex2;

/*弧或边所依附的两个顶点

*/ InfoType info;

/*与边或弧相关的信息, 如权值

*/ }ArcType;

/*弧或边的结构定义

*/ //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// void Init_Graph(ALGraph * G)

/*图的初始化

*/ { do {

printf(“请确认旅游景点的类型(1:无向图。2:有向图。3:带权有向图。4:带权无向图):n”);

} scanf(“%d”, &G->kind);if(G->kind==4)printf(“旅游区导游图的类型:带权无向图n”);else {

} printf(“

●您选择的图的类型不对●n”);

while(G->kind!=4);G->vexnum=0;

/* 初始化顶点个数为0

*/ } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// int LocateVex(ALGraph *G, VexType vp)

/*图的顶点定位(图的顶点定位实际上是确定一个顶点在AdjList数组中的某个元素的data域内容。)*/ {

int k;for(k=0;kvexnum;k++)if(G->AdjList[k].data==vp)return(k);

/*如果存在此顶点返回顶点数组下标值

return(-1);

/*如果没有则返回-1(图中无此顶点)

*/

*/ } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// int AddVertex(ALGraph *G, char vp)

/*向图中增加顶点(向图中增加一个顶点的操作,在AdjList数组的末尾增加一个数据元素。)*/ { int k;if(G->vexnum>=MAX_VEX){ } if(LocateVex(G,vp)!=-1){ printf(“所要添加的顶点已存在!n”);printf(“图中顶点数已达到最多!n”);

return(-1);return(-1);} G->AdjList[G->vexnum].data=vp;G->AdjList[G->vexnum].indegree=0;G->AdjList[G->vexnum].firstarc=NULL;k=++G->vexnum;return k;} /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// int AddArc(ALGraph *G, ArcType *arc)/*向图中增加一条边(弧)(根据给定的弧或边所依附的顶点,修改单链表:无向图修改两个单链表;)*/ {

int k,j;LinkNode *p,*q;k=LocateVex(G,arc->vex1);j=LocateVex(G,arc->vex2);if(k==-1||j==-1)

/*先判断是否两个顶点重复或者是否存在这两个顶点*/

{ printf(“该两个景点为一点或两景点都不存在,错误!n”);

return(-1);} p=(LinkNode *)malloc(sizeof(LinkNode));p->adjvex=arc->vex1;p->info=arc->info;p->nextarc=NULL;

/* 边的起始表结点赋值

*/ q=(LinkNode *)malloc(sizeof(LinkNode));q->adjvex=arc->vex2;q->info=arc->info;

q->nextarc=NULL;

/* 边的末尾表结点赋值

*/ q->nextarc=G->AdjList[k].firstarc;

G->AdjList[k].firstarc=q;p->nextarc=G->AdjList[j].firstarc;G->AdjList[j].firstarc=p;

/* 是无向图, 用头插入法插入到两个单链表

*/ return(1);

/*无向图,把p和q互相连接到彼此的边点上

*/ } ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ALGraph *Create_ALGraph()/*采用邻接链表作为图的存储结构建立带权有向图*/ {

char stack1[MAX_VEX],stack2[MAX_VEX],vex,k1,k2;int weight;ALGraph *G;ArcType *p;printf(“首先对旅游区导游图进行初始化:nn”);G=(ALGraph *)malloc(sizeof(ALGraph));//申请动态结点空间

Init_Graph(G);printf(“n请输入旅游区导游图的各个旅游景点代码(以字符的形式出入),当输入0时作为结束标志n”);while(1){

scanf(“%s”,stack1);/*以字符串的形式输入存储旅游区景点,一次一个的存储输入的景点存到数组中之后又在图中插入该顶点,当输入0时结束*/

vex=stack1[0];

/*用字符串可以区别结束标识,用字符存到数组中不易设置结束标志*/

} if(vex=='0')break;else AddVertex(G,vex);p=(ArcType *)malloc(sizeof(ArcType));printf(“n 从键盘输入以(Vi ,Vj ,d)的形式建立该旅游区的旅游景点图,n 其中: Vi和Vj表示两个不同的旅游景点, d表示这两个景点之间的道路距离;n 该旅游景点图采用邻接链表存储结构(当输入第一个顶点是0时表示结束):n”);

while(1){

scanf(“%s”,stack1);k1=stack1[0];

if(k1=='0')

/* 输入第一个顶点,0结束

*/ break;

else {

scanf(“%s”,stack2);scanf(“%d”,&weight);

/* 输入第二个顶点和权值

*/ k2=stack2[0];p->vex1=k1;p->vex2=k2;p->info=weight;

AddArc(G,p);printf(“n请继续输入下一条道路!n”);} } return(G);} ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// void output_ALGraph(ALGraph *G)

// 2:输出图的邻接链表

{

int j;LinkNode *p;

printf(“n旅游区导游图的邻接链表景点输出表示如下:n”);for(j=0;jvexnum;j++){

printf(“%c”,G->AdjList[j].data);

p=G->AdjList[j].firstarc;

while(p!=NULL)

//输出一个邻接链表的景点之后,继续输出他的其他邻接景点

} {

} printf(“-> ”);printf(“<%c,%d>”,p->adjvex,p->info);p=p->nextarc;printf(“nn”);} //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// void output_Find_ALGraph(ALGraph *G)

// 4:相邻景点查询并输出

{

int j;LinkNode *p;

//定义邻接边单链表结点p printf(“请输入您要查询的景点(顶点数组下标值):n”);

//从输入的景点开始找和其相邻的景点并输出权值

scanf(“%d”,&j);

p=G->AdjList[j].firstarc;

//定义邻接边头指针 while(p!=NULL){ printf(“景点%c到景点%c的距离是%d(两景点之间有相连的道路)n”,G->AdjList[j].data,p->adjvex,p->info);//第j个景点和他下一个相邻的景点和权值

p=p->nextarc;

//指向下一个结点的地址,使全部与G->AdjList[j].data直接连通的顶点全部输出,NULL时截止 } printf(“nn”);} //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// void ListToMat(ALGraph G, MGraph &g)

/*将邻接链表转换成邻接矩阵

*/ { int k,i,j;

LinkNode *p;for(i=0;i

/*g.arcs[i][j]赋初值INFINITY

for(j=0;j

g.arcs[i][j]=INFINITY;for(i=0;i

/*把链表的数组顶点保存到数组vexs[i]} for(i=0;i

p=G.AdjList[i].firstarc;while(p!=NULL)

{

k=LocateVex(&G,p->adjvex);

/*取和p相邻的顶点下标值用于邻接*/

中*/

矩阵的下标值

*/

g.arcs[i][k]=g.arcs[k][i]=p->info;/*把权值赋值给二维数组用于矩阵输出

*/

*/

} } p=p->nextarc;

/*指向下一个邻接表结点

} g.vexnum=G.vexnum;///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// void display(ALGraph *G,MGraph g)

/*3:输出邻接矩阵

*/ { int i,j;ListToMat(*G, g);

/*将邻接链表转换成邻接矩阵

*/ printf(“

”);for(i=0;ivexnum;i++)printf(“%-8c”,G->AdjList[i].data);

/*输出矩阵横向顶点值

*/ printf(“n”);for(i=0;i

printf(“%c

”,G->AdjList[i].data);

/*输出矩阵竖向顶点值,每输出一行输出一次顶点*/

}

} for(j=0;j

if(g.arcs[i][j]==INFINITY)

printf(“∞

”);else printf(“%-8d”, g.arcs[i][j]);

/*每个权值占有8个字符,负号表示左端对齐

*/ } printf(“n”);//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// void dijkshort_One(ALGraph F, MGraph G,int v0,int distance[], int path[])/* 带权图G从顶点v0到其他定点的最短距离distance和最短路径前驱结点的下标path*/ //带权图F从下标v0到其他顶点的最短距离diatance和最短路径下标path,path中存放了从输入的v0到其他各个顶点的最短路径的前一个顶点的下标 //基于狄克斯特拉函数的设计

{

int *S=(int *)malloc(sizeof(int)*G.vexnum);int minDis,i,j,u,p;

ListToMat(F, G);printf(“你所要开始查询的景点是:%cn”,F.AdjList[v0].data);for(i=0;i

distance[i]=G.arcs[v0][i];S[i]=0;if(distance[i]

path[i]=-1;} S[v0]=1;

//标记顶点v0已从集合T加入到集合S中(以v0为下标值的顶点)for(i=0;i

minDis=INFINITY;for(j=0;j

{

minDis=distance[j];

u=j;} } S[u]=1;

//标记顶点u已从集合T加入到集合S中(以u为下标值的顶点)

for(j=0;j

// /修改从v0到其他顶点的最短距离和最短路径

if(S[j]==0&&G.arcs[u][j]distance[u]+G.arcs[u][j]){ distance[j]=distance[u]+G.arcs[u][j];//顶点v0经顶点u到其他顶点的最短距 path[j]=u;离和最短路径

} }

//顶点v0到其他所有的顶点的最短距离已经保存在数组distance中 printf(“查询结果是:n”);for(j=0;j

if(path[j]!=-1){

printf(“从景点%c到景点%c”,F.AdjList[v0].data,G.vexs[j]);

p=path[j];

printf(“的最短距离是: %d”,distance[j]);//输出顶点v0到其他所有的顶点的最短printf(“ 途中经过的景点有:”);while(p!=-1){ printf(“ %c”,G.vexs[p]);

路径

}

p=path[p];} printf(“n”);

} else if(j!=v0)

printf(“n%c到%c : 没有通路!”,G.vexs[j],G.vexs[v0]);/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// void dijkshort_Two(ALGraph F, MGraph G,int v0,int distance[], int path[])/*带权图G从顶点v0到其他定点的最短距离distance和最短路径前驱结点的下标path*/ {

int w;int S[30],i,j,k,p,min,d;ListToMat(F, G);printf(“你所要开始查询的开始景点是:%cnn”,F.AdjList[v0].data);for(i=0;i

{

distance[i]=G.arcs[v0][i];S[i]=0;if(distance[i]

//顶点v0已加入到集合S中 for(i=0;i

min=INFINITY;for(j=0;j

if(!S[j]&&distance[j]

{

} min=distance[j];k=j;} S[k]=1;

///将找到的顶点加入到集合S中 for(w=0;w

// /修改集合T中顶点的距离值

if(!S[w]&&distance[w]>distance[k]+G.arcs[k][w]){ distance[w]=distance[k]+G.arcs[k][w];} path[w]=k;}

printf(“输入你要查询的另外一个景点(下标值):”);scanf(“%d”,&d);printf(“你要查询的另外一个景点是:%cn”,G.vexs[d]);printf(“n查询结果:n”);//输出结果

if(path[d]!=-1){

printf(“从景点%c到景点%c”,F.AdjList[v0].data,G.vexs[d]);

p=path[d];printf(“的最短距离是: %d”,distance[d]);printf(“ 途中经过的景点有:”);while(p!=-1){ printf(“ %c”,G.vexs[p]);p=path[p];} printf(“n”);} } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// void dfs_path(ALGraph *g,int src,int cur,int vis[],GPath *cur_path,GPath * min_path){

LinkNode * node =g->AdjList[cur].firstarc;for(;node!=NULL;node=node->nextarc)/*起始条件为node =g->AdjList[cur].firstarc*/ {

} char adj=node->adjvex;int index=LocateVex(g,adj);if(vis[index]==0){

} cur_path->vertex[cur_path->count++]=index;cur_path->value+=node->info;vis[index]=1;dfs_path(g,src,index,vis,cur_path,min_path);cur_path->count--;cur_path->value-=node->info;vis[index]=0;if(vis[src]){

} if(cur_path->count==g->vexnum){

if(cur_path->valuevalue){ memcpy(min_path,cur_path,sizeof(GPath));/*由cur_path所指内存区域复制return;sizeof(GPath)个字节到min_path所指内存区域*/ } } return;} //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// void best_path(ALGraph *g,int src){ int vis[MAX_VEX];memset(vis,0,sizeof(vis));GPath cur_path,min_path;memset(&cur_path,0,sizeof(GPath));/*将cur_path所指向的某一块内存中的每个字节的内容全部设置为0指定的ASCII值,块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作, 其返回值为指向cur_path的指针。*/ memset(&min_path,0,sizeof(GPath));/*将min_path所指向的某一块内存中的每个字节的内容全部设置为0指定的ASCII值,块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作, 其返回值为指向min_path的指针。*/

min_path.value=MAX_VALUE;dfs_path(g,src,src,vis,&cur_path,&min_path);if(min_path.value!=MAX_VALUE){

int i=0;printf(“n最佳旅游路线景点下标值是:n”);for(i=0;i

printf(“%d->”,min_path.vertex[i]);} printf(“n”);printf(“n最佳旅游路线景点是:n”);

for(i=0;i

{

printf(“%c-> ”,g->AdjList[min_path.vertex[i]].data);

} } printf(“n”);}else { printf(“建立的图中没有最佳路径n”);}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /*------------菜单------------*/ void main(){

int n,v0;MGraph g;int distance[MAX_VEX],path[2*MAX_VEX];ALGraph *G;

printf(“

============================n”);

printf(“

!欢迎使用旅游区导游系统

!n”);printf(“

============================n”);do { printf(“n请选择对该旅游区导游图的操作→nn”);

printf(“

┏━━━━━━━━━━━━━━━━━━━━━┓n”);printf(“

1.建立旅游区导游图的邻接链表存储

┃n”);printf(“

2.旅游区导游图的邻接链表的输出

┃n”);printf(“

3.旅游区导游图的邻接矩阵的输出

┃n”);printf(“

4.相邻景点查询

┃n”);printf(“

5.景点路线查询

┃n”);printf(“

6.景点路线综合查询(查询两景点最短路径)┃n”);printf(“

7.最佳路径

┃n”);printf(“

8.退出

┃n”);printf(“

┗━━━━━━━━━━━━━━━━━━━━━┛n”);do { } scanf(“%d”,&n);while(n<1||n>9);switch(n){ case 1:

{

G=(ALGraph *)malloc(sizeof(ALGraph));/*动态申请图G的内存空间*/ G=Create_ALGraph();printf(“nn”);break;

} case 2:

{

} {

printf(“n旅游导游图的邻接链表表示如下所示:n”);output_ALGraph(G);printf(“nn”);break;case 3:

printf(“n旅游区导游图的邻接矩阵表示如下所示:n”);printf(“n∞表示两景点之间不存在连通的路线n”);printf(“n数值表示两景点之间的路线长度n”);display(G,g);printf(“nn”);break;

}

case 4:

{

}

case 5:

{

}

case 6:

{

}

case 7:

{

}

} } while(n!=8);} output_Find_ALGraph(G);printf(“nn”);break;printf(“输入你要查询的景点(下标值):”);scanf(“ %d”,&v0);dijkshort_One(*G,g,v0,distance,path);break;printf(“输入你要查询的开始景点(下标值):”);scanf(“ %d”,&v0);dijkshort_Two(*G,g,v0,distance,path);break;printf(“输入你要查询的开始景点(下标值):”);scanf(“%d”,&v0);printf(“景点是%c ”,G->AdjList[v0].data);best_path(G,v0);break;

第四篇:公园导游图 课程设计任务书

课程设计任务书

2013~2014学年第 1 学期

学生姓名:专业班级:2012网络工程(1)班 指导教师:冯珊工作部门:计算机学院

一、课程设计题目: 公园导游图

二、课程设计内容

给出一张某公园的导游图,游客通过终端询问可知:从某一景点到另一景点的最短路径。游客从公园大门进入,选一条最佳路线,使游客可以不重复地游览各景点,最后回到出口(出口就在入口旁边)。

三、进度安排

1. 初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;

2. 完成最低要求:建立一个文件,包括5个景点情况,能完成遍历功能;

3. 进一步要求:进一步扩充景点数目,画出景点图,有兴趣的同学可以自己扩充系统功能。

四、基本要求

1.界面友好,函数功能要划分好

2.总体设计应画一流程图

3.程序要加必要的注释

4.要提供程序测试方案

5.程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价

值的。

第五篇:某数据结构课程设计公园导游图

数据结构实验报告

班级:06软件工程

姓名:周邓雄

学号:06517037

实验四:图(内容:某公园导游图)

一、问题描述:

公园导游系统:给出一张某公园的导游图,游客通过终端询问可知︰从某一景到另一景点的最短路径。游客从公园大门进入,选一条最佳路线,使游客可以不重复地游览各景点,最后回到出口(出口就在入口旁边)。

二、设计描述:

1.输入导游图的算法(存储方法).本程序特地设计函数void initgraph()用于实现键盘输入图的结构;

2.可访问导游图中任一景点的算法.为此设计了函数void vist(GraphMatrix graph)用于实现访问任一景点的信息; 3.最短路径从一景点到另一景点的算法。利用floyd算法-实现每一对景点间的最短路径。并利用void outgraph()函数实现显示起始点和终点间的最短路径和其长度;

三、程序清单:

#include using namespace std;#include #define MAXVEX 100 #define MAX 999

typedef char VexType;数据结构实验报告

班级:06软件工程

姓名:周邓雄

学号:06517037

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;数据结构实验报告

班级:06软件工程

姓名:周邓雄

学号:06517037

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<

//输入要查找起始点和终点(本程序限于编号(int型))cout<>c;cin>>b;i=path.a[c][b];

//通过path.a[c][b]把路径长度赋给i 数据结构实验报告

班级:06软件工程

姓名:周邓雄

学号:06517037

cout<<“该路径总长为:”;cout<

//输出路径长度 cout<<“所得路径顺序为”;cout<

//此处输出路径的第一个编号

c=path.nextvex[c][b];

for(;c!=b;c=path.nextvex[c][b])

//循环顺序输出路径始点和终点之间的景点编号 cout<<“,”<

//再输出路径的最后一个编号

cout<

//该函数用于实现键盘输入图的结构 { int i,m,j;printf(“请输入公园景点的个数:”);

//图结点的个数赋给graph.n scanf(“%d”,&m);graph.n=m;for(i=0;i

//循环输入结点顶点信息 { printf(“请输入第%i个景点信息:”,i);//为了简明起见此程序结点顶点信息限于字符型 cin>>graph.vexs[i];} printf(“请输入公园的邻接矩阵的信息n”);//循环输入图的邻接矩阵信息(也就是输入一个二维数组)for(i=0;i

班级:06软件工程

姓名:周邓雄

学号:06517037

for(j=0;j

printf(“请输入第%d行,第%d列的元素:”,i+1,j+1);cin>>graph.arcs[i][j];} } void vist(GraphMatrix graph)

//函数用于实现访问任一景点的信息 {

int i;

cout<

cout<<“你想知道哪个景点的信息:”;//注意输入的是景点的编号

cin>>i;

cout<

cout<<“景点信息查询结果为:”;

cout<

cout<

//用于判断是否继续执行特定的下一步程序 {int a;cout<<“还想继续查询?(1&0)”;cin>>a;return a;} int main()数据结构实验报告

班级:06软件工程

姓名:周邓雄

学号:06517037

{

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<

outgraph();

while(jud())

outgraph();

//outgraph()函数用于实现显示起始点和终点间的最短路径和其长度

vist(graph);

//函数用于实现访问任一景点的信息

cout<

while(jud())

vist(graph);

cout<

return 0;} 数据结构实验报告

班级:06软件工程

姓名:周邓雄

学号:06517037

验四:图(内容:某公园导游图)

.问题描述 ①

给出一张某公园的导游图,游客通过终端询问可知:

(1)从某一景点到另一景点的最短路径。

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

.要求 ②

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

.实现提示 ③

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

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

.选做内容 ④

可以把各种路径都显示给游客,由游客自己选择游览路线。数据结构实验报告

班级:06软件工程

姓名:周邓雄

学号:06517037

下载大班阅读:有趣的导游图(5篇模版)word格式文档
下载大班阅读:有趣的导游图(5篇模版).doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    有趣的汉字(大班)

    大班语言教案:有趣的汉字_幼儿园教案 活动由来及设计思路: 大班幼儿即将升入小学,为使幼儿更快地适应及了解小学生活,我们开展了“我要上学啦”主题活动。大班幼儿对文字符号有......

    有趣的广告(大班)

    有趣的广告 有趣的广告(大班) 童得梦第一幼儿园 设计思路:在一次自由活动中,有几个小朋友在,你一句,我一句的说特别高兴,我仔细听了一下,原来她们在说广告,过了一会又有许多小朋友......

    大班《有趣的广告》★

    大班集体教学活动——有趣的广告  教学目标: 1. 认识生活中的广告,了解广告的主要作用。 2. 愿意大胆表达自己的观点,体会设计广告语的趣味性。  教学准备: 经验准备:幼儿在生活......

    制作北京奥运游导游图教学设计

    课题名称:制作“北京奥运游”导游图 (一) 教学目标 1、 知识与技能 (1) 认识PowerPoint 中各种自选图形 (2) 会运用自选图形工具绘制和修饰自选图形 (3) 会在自选图形中添加图片、文......

    大班美术《有趣的笑脸》

    大班美术《有趣的笑脸》 大班美术《有趣的笑脸》 活动目标: 1、通过对多幅图画的细致观察,讨论和交流,感受漫画中五官夸张的表现手法,尝试用夸张的方法表现夸张的人。 2、自......

    幼儿园大班有趣的日历

    活动目标:1、帮助幼儿树立时间交替的观念,教育幼儿要珍惜时间。 2、引导幼儿学会看日历,了解日历在日常生活中的运用。 3、使幼儿了解日历的表现形式有很多种,认识日历,知道一年......

    大班教案——有趣的纸盒

    [大班教案——有趣的纸盒] 有趣的纸盒活动目标: 1、通过玩玩、做做纸盒,进一步感知平面图形与立体图形的关系,发展空间知觉,大班教案——有趣的纸盒。 2、培养幼儿动手动脑的......

    大班科学教案有趣的泡泡[精选合集]

    大班科学教案有趣的泡泡3篇作为一名人民教师,有必要进行细致的教案准备工作,教案是教学蓝图,可以有效提高教学效率。我们应该怎么写教案呢?下面是小编为大家整理的大班科学教案......