资源预览内容
第1页 / 共17页
第2页 / 共17页
第3页 / 共17页
第4页 / 共17页
第5页 / 共17页
第6页 / 共17页
第7页 / 共17页
第8页 / 共17页
第9页 / 共17页
第10页 / 共17页
亲,该文档总共17页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
目 录1 前言 .12 需求分析 .22.1 课程设计目的 .22.2 课程设计任务 .22.3 设计环境 .22.4 开发语言 .23 分析和设计 .23.1 模块设计 .23.2 系统流程图 .33.3 主要模块的流程图 .74 具体代码实现 .115 课程设计总结 .225.1 程序运行结果 .225.2 课程设计体会 .23参考文献 .23致 谢 .2311 前言本课程设计是关于数据结构和栈道的基本操作,使用 c 语言编程,定义合适的数据结构,对已经学习的 c 语言的指针,数据结构和栈道加以了解。对于程序设计课程的运用和学习。2 需求分析2.1 课程设计目的学生在教师指导下运用所学课程的知识来研究、解决一些具有一定综合性问题的专业课题。通过课程设计(论文) ,提高学生综合运用所学知识来解决实际问题、使用文献资料、及进行科学实验或技术设计的初步能力,为毕业设计(论文)打基础。2.2 课程设计任务给出迷宫的入口和出口及相关的通路,求出从入口到出口的路径。要求使用 C语言编程,定义合适的数据结构。最后,需要说明设计思想,同时给出能够运行的源程序,并给出对应的程序流程图2.3 设计环境(1)WINDOWS 2000/2003/XP/7/Vista 系统(2)Visual C+或 TC 集成开发环境2.4 开发语言C 语言3 分析和设计3.1 模块设计定义 SHU、MG 结构体类型, 产生记忆效果,以及用线性链表来进行地图更改。2typedef struct shujuint data;int flag; /*判断这个位置是否被走过,使其产生记忆效果*/SHU;typedef struct mazeint c;int flag;int direct;int x;int y;struct maze *next;MG;定义 pop()函数,用来进行入栈操作。定义 way() 函数,用来寻找迷宫地图正确的路径。 /*寻找路径函数*/33.2 系统流程图开始输出原始矩阵迷宫地图定义相关变量以 及结构体数组给 5 行 5 列的迷宫赋值为 8 的矩阵值为 8 的矩阵输入 25 个后迷 宫地图创建完成输出提示用户输入 0 或 1刷屏输出用户创建地图的迷宫地图提示用户输入入口 坐标并接收其值提示用户输入出口 坐标并接收其值调用 pop 函数进行入栈操作判断是否有入口位置,如没有要求重新 输 入直至合法调用 way 函数来进行路径判断输出图43.3 主要模块的流程图NY结束图 3.1 系统流程图定义相关变量开辟一个 MG 结构体内存单元并赋其值 MG 头指针指向其刚定义的结构体判断是否为首次定义 MGMG 结构体的 next指针指向头指针MG 头指针 next 指针指向 NULLMG 头指针指向其刚定义的结构体刷屏并输出迷宫地图其刚定义的结构体作为返回值返回图 3.2 POP 入栈流 程图5NYYNYY1 2 3 4 头指针的左方向的值自减定义相关变量并相应赋值 头指针不为 NULL头指针标记变量为 1取出头指针的两个坐标 x,y判断 x,y 是否与出口相等判断头指针的左方向是否为 4NYY判断数组下标是否超过界限6判断下列的值表示为通且标量为 0Y调用 pop 函数入栈判断头指针的下方向是否为 3头指针的下方向的值自减YYY调用 pop 函数入栈N2 3 4判断下行的值表示为通且标量为 0Y判断数组下标是否超过界限7判断头指针的左方向是否为 2头指针的左方向的值自减判断下列的值表示为通且标量为 0调用 pop 函数入栈YYYN判断头指针的上方向是否为 1YN1 3 4判断数组下标是否超过界限8头指针的左方向的值自减判断数组下标是否超过界限判断下列的值表示为通且标量为 0调用 pop 函数入栈给标记赋 1,地图标量赋 0,头指针指向 next 并清屏输出判断路径的迷宫地图返回 f 的值图 3.2 way 寻找路径函数流程图94 具体代码实现#include#include#include#include#include#include#include#include#define M 5 /*规定迷宫的行数*/#define N 5 /*规定迷宫的列数*/int i=0;typedef struct shujuint data;int flag; /*判断这个位置是否被走过,使其产生记忆效果*/SHU;typedef struct mazeint c;int flag;int direct;int x;int y;struct maze *next;MG;MG *top,*p;MG * pop(int bb,int xx,int yy,SHU tMN) /*入栈操作*/int i2,j2;i+;p=(MG *)malloc(sizeof(MG);10p-c=bb;p-flag=1;p-direct=4;p-x=xx;p-y=yy;if(i=1)top=p;top-next=NULL;elsep-next=top;top=p;system(cls);for(i2=0;i2flag=1)x=top-x;y=top-y;if(x=x1&y=y1) f=1;break; /*判断右方向*/if(top-direct=4)top-direct-;if(0direct=3) /*判断下方向*/top-direct-;if(0direct=2) /*判断左方向*/top-direct-;if(0direct=1) /*判断上方向*/12top-direct-;top-flag=0;if(0xtop-y.data=0;stop-xtop-y.flag=1;top=top-next;system(cls);for(i1=0;i1M;i1+)printf(n);for(j1=0;j1N;j1+)if(si1j1.data=8)cprintf(%3d,si1j1.data);elsecprintf(%3d,si1j1.data);return f;void main()SHU sMN;13int x,y,x1,y1;int i1,j1,i,j,F;for(i1=0;i1M;i1+)for(j1=0;j1N;j1+) /*迷宫图面,用一个数字表示*/si1j1.data=8; for(i1=0;i1M;i1+)printf(n);for(j1=0;j1N;j1+)printf(%3d,si1j1.data); /*打印迷宫最原始的界面,用数字 8 表示每个 位置*/printf(n 请输入 0 或 1 来表示迷宫地图 -0 为通 -1 为不通n);for(i1=0;i1M;i1+)for(j1=0;j1N;j1+)printf(nb%d%d=,i1,j1);scanf(%d, /*绘制迷宫,0 代
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号