已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目 录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致 谢231 前言本课程设计是关于数据结构和栈道的基本操作,使用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结构体类型, 产生记忆效果,以及用线性链表来进行地图更改。typedef struct shujuint data;int flag; /*判断这个位置是否被走过,使其产生记忆效果*/SHU;typedef struct mazeint c;int flag;int direct;int x;int y;struct maze *next;MG;定义pop()函数,用来进行入栈操作。定义 way() 函数,用来寻找迷宫地图正确的路径。 /*寻找路径函数*/3.2 系统流程图 开始定义相关变量以 及结构体数组给5行5列的迷宫赋值为8的矩阵值为8的矩阵 输出原始矩 阵迷宫地图 输出提示用户 输入0或1输入25个后迷 宫地图创建完成 刷屏输出用户创建地图 的迷宫地图提示用户输入入口 坐标并接收其值提示用户输入出口 坐标并接收其值判断是否有入口位置,如没有要求重新 输 入直至合法调用pop函数进行入栈操作调用way函数来进行路径判断输出图 结束图3.1 系统流程图 3.3 主要模块的流程图定义相关变量开辟一个MG结构体内存单元并赋其值 判断是否为首次定义MG N图3.2 POP入栈流 程图其刚定义的结构体作为返回值返回刷屏并输出迷宫地图MG头指针next指针指向NULLMG头指针指向其刚定义的结构体MG结构体的next指针指向头指针YMG头指针指向其刚定义的结构体定义相关变量并相应赋值 头指针不为NULL N头指针标记变量为1 YN 取出头指针的两个坐标x,yY判断x,y是否与出口相等YY判断头指针的左方向是否为4 N头指针的左方向的值自减 Y判断数组下标是否超过界限Y 1 2 3 4 Y判断下列的值表示为通且标量为0 2 3 4调用pop函数入栈判断数组下标是否超过界限Y判断下行的值表示为通且标量为0NYYY头指针的下方向的值自减调用pop函数入栈判断头指针的下方向是否为3判断头指针的左方向是否为2NY头指针的左方向的值自减判断数组下标是否超过界限Y判断下列的值表示为通且标量为0Y调用pop函数入栈判断头指针的上方向是否为1N1 3 4Y头指针的左方向的值自减判断数组下标是否超过界限判断下列的值表示为通且标量为0调用pop函数入栈给标记赋1,地图标量赋0,头指针指向next并清屏输出判断路径的迷宫地图返回f的值图3.2 way寻找路径函数流程图4 具体代码实现#includemalloc.h#includestdio.h#includeconio.h#includeprocess.h#includestdlib.h#includedos.h#includewindows.h#includetime.h#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);p-c=bb;p-flag=1;p-direct=4;p-x=xx;p-y=yy;if(i=1) top=p; top-next=NULL; else p-next=top; top=p; system(cls);for(i2=0;i2M;i2+)printf(n); for(j2=0;j2N;j2+) if(ti2j2.data=8) cprintf(%3d,ti2j2.data); else cprintf(%3d,ti2j2.data); return p;int way(int x1,int y1,SHU sMN) /*寻找路径函数*/ int x,y,f=0; int i1,j1;while(top!=NULL) /*以下是在四个方向上进行判断 通就入栈,不通就进行下个方向的 判断,如果四个方向都不通,就出栈*/ if(top-flag=1) x=top-x; y=top-y; if(x=x1y=y1) f=1; break; /*判断右方向*/ if(top-direct=4) top-direct-; if(0=y+1y+1N) /*判断数组的下标是否超过了规定的界限*/ if(sxy+1.data=0sxy+1.flag=0) pop(sxy+1.data=8,x,y+1,s); else if(top-direct=3) /*判断下方向*/ top-direct-; if(0=x+1x+1M) if(sx+1y.data=0sx+1y.flag=0) pop(sx+1y.data=8,x+1,y,s); else if(top-direct=2) /*判断左方向*/ top-direct-; if(0=y-1y-1N) if(sxy-1.data=0sxy-1.flag=0) pop(sxy-1.data=8,x,y-1,s); else if(top-direct=1) /*判断上方向*/ top-direct-; top-flag=0; if(0=x-1x-1M) if(sx-1y.data=0sx-1y.flag=0) pop(sx-1y.data=8,x-1,y,s); else stop-xtop-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); else cprintf(%3d,si1j1.data); return f;void main()SHU sMN;int 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,si1j1.data); /*绘制迷宫,0代表通,1代表不通*/ si1j1.flag=0; system(cls); for(i=0;iM;i+) printf(n); for(j=0;jN;j+) if(sij.data=0) cprintf(%3d,sij.data); else if(sij.data=1) cprintf(%3d,sij.data); else cprintf(%3d,sij.data); printf(nmi gong tu is :);for(i1=0;i1M;i1+)printf(n); for(j1=0;j1N;j1+) printf(%3d,si1j1.data); printf(n输入迷宫的入口坐标(X,Y)n for example input:0 0ninput:); /*输入迷宫的入口坐标(X,Y)*/ scanf(%d %d,x,y);printf(输入迷宫的出口坐标(X1,Y1)n for example input:3 3ninput:); /*输入迷宫的出口坐标(X1,Y1)*/ scanf(%d %d,x1,y1); printf(press any key to continue:); getch();while(sxy.data!=0) /*判断是否有入口位置*/ printf(Not find ru koun); printf(please input again: ); scanf(%d %d,x,y); pop(sxy.data=8,x,y,s);F=way(x1,y1,s); /*路径进行判断函数*/if(F=0)cprintf(rn本迷宫没有解!n); else cprintf(rn本迷宫有解:n);cprintf(rnpress any key to quit.n);getch();5 课程设计总结5.1 程序运行结果 首先通过输入给数组赋值,创建迷宫地图,再输入迷宫的入口,以及迷宫的出口,判断迷宫是否有没有正确的线路,如果有解,则输出正确迷宫地图线路。如果没有解,则输出无解迷宫地图线路。5.2 课程设计体会通过这次数据的建立的实验,掌握了数据结构的基本操作,也使我对数据结构实质了解更加明确,对它的一些基本操作也更加熟悉了,在实验输入编码的时候要仔细,小心,耐心,我才能减少输入编码的错误。如一个小小的符号错误,就会导致你的编译将不能成功。在写代码的时,我们要查一些资料,问同学,问老师,也增加同学与老师和同学与同学之间的友谊,使我增加了做一些事还要合作精神,更重要增加了我们的知识。在实验中我们意识到不能想当然的直接编译执行,应当在阅读并理解源代码的基础上执行,这才是我们做这个实验的意义吧。理论与实践结合。 参考文献 1 张福祥. C语言程序设计M. 沈阳:辽宁大学出版社,2010.12 张福祥,王萌C语言程序设计习题解答与实验实训M沈阳:辽宁大学出版社,20
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 螺旋桩机租赁合同范本
- 荣誉证书制作合同范本
- 运输车辆合伙合同范本
- 美甲物品购买合同范本
- 邢台租赁合同协议模板
- 监控维修补充合同范本
- 羊奶粉供货合同协议书
- 网红定制产品合同范本
- 维修房屋承揽合同范本
- 活动19 关爱社区“空巢老人”教学设计-2025-2026学年小学劳动五年级北师大·深圳报业版《劳动实践指导手册》(主编:韩震)
- 2025年国有企业投资管理制度
- 规范足球训练计划内容
- 公司团建活动总结
- 2025兼职劳动合同简易范本下载
- 2025四川蜀道高速公路集团有限公司招聘工作人员笔试考试参考试题及答案解析
- 2025下半年四川省自然资源投资集团社会招聘考试笔试备考题库及答案解析
- 安全生产监督员考试题库及答案解析
- 读书活动彩排活动方案
- 2025年神经外科手术室护士术前准备与术后护理模拟考核试题及答案解析
- 法学概论(第七版)课件全套谷春德第1-7章我国社会主义法的基本理论-国际法
- 2026年大连职业技术学院单招职业技能考试题库附答案
评论
0/150
提交评论