




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据结构课程设计设计题目:迷宫问题学院:信息技术学院专业:网络工程班级:B1204学号:0913120419姓名:葛晨阳指导老师:戴玉洁2013年7月20日—2013年8月1日课程设计日期:
实验题目一、问题描述输入一个任意大小的迷宫数据,用递归和非递归两种方法求出一条走出迷宫的路径,并将路径输出。二、实现目标综合运用递归、栈等数据结构知识,掌握、提高分析、设计、实现及测试程序的综合能力三、主要功能模块及实现功能(创建一顺序栈:PSeqStackInit_SeqStack(void)判断栈是否为空:intEmpty_SeqStack(PSeqStackS)在栈顶插入一新元素x:intPush_SeqStack(PSeqStackS,DataTypex)删除栈顶元素并保存在*x:intPop_SeqStack(PSeqStackS,DataType*x)销毁栈:voidDestroy_SeqStack(PSeqStack*S)利用栈的非递归算法求迷宫路径:intmazepath(intmaze[][n+2],itemmove[],intx0,inty0)递归算法求迷宫路径:intmazepath1(intmaze[][n+2],itemmove[],intx,inty)主函数:intmain(){出口坐标已定,利用while循环多次输入入点坐标,调用mazepath(intmaze[][n+2],itemmove[],intx0,inty0)输出可走的路径}四、主要模块流程图初始化初始化开始游戏开始游戏nn,结束,结束y,继续y,继续输入数据输入数据系统调用运算系统调用运算生成路径无解生成路径无解五、实验结果及测试数据初始界面游戏界面游戏界面附录:源代码#include<stdio.h>#include<stdlib.h>#definem6#definen8#defineMAXSIZE100intmaze[m+2][n+2]={{1,1,1,1,1,1,1,1,1,1},//四周为1代表围墙,0为可走路径{1,0,0,1,1,0,0,0,1,1},{1,0,0,0,0,1,1,1,1,1},{1,0,1,0,0,0,0,0,1,1},{1,0,1,1,1,0,0,1,1,1},{1,1,0,0,1,1,0,0,0,1},{1,0,1,0,0,0,1,1,0,1},{1,1,1,1,1,1,1,1,1,1}};//入口坐标为(1,1),出口坐标为(6,8)typedefstruct{intx,y;/*试探方向*/}item;itemmove[4]={{0,1},{1,0},{0,-1},{-1,0}};typedefstruct/*栈的设计*/{intx,y,d;/*纵横坐标及方向*/}DataType;typedefstruct/*栈*/{DataTypedata[MAXSIZE];inttop;}SeqStack,*PSeqStack;PSeqStackInit_SeqStack(void){/*创建一顺序栈,入口参数无,返回一个指向顺序栈的指针,为零表示分配空间失败*/PSeqStackS;S=(PSeqStack)malloc(sizeof(SeqStack));if(S)S->top=-1;returnS;}intEmpty_SeqStack(PSeqStackS){/*判断栈是否为空,入口参数:顺序栈,返回值:1表示为空,0表示非空*/if(S->top==-1)return1;elsereturn0;}intPush_SeqStack(PSeqStackS,DataTypex){/*在栈顶插入一新元素x,入口参数:顺序栈,返回值:1表示入栈成功,0表示失败。*/if(S->top==MAXSIZE-1)return0;/*栈满不能入栈*/else{S->top++;S->data[S->top]=x;return1;}}intPop_SeqStack(PSeqStackS,DataType*x){/*删除栈顶元素并保存在*x,入口参数:顺序栈,返回值:1表示出栈成功,0表示失败。*/if(Empty_SeqStack(S))return0;/*栈空不能出栈*/else{*x=S->data[S->top];S->top--;return1;}}voidDestroy_SeqStack(PSeqStack*S){ if(*S) free(*S); *S=NULL; return;}/*利用栈的非递归算法*/intmazepath(intmaze[][n+2],itemmove[],intx0,inty0){/*求迷宫路径,入口参数:指向迷宫数组的指针,下标移动的增量数组,开始点(x0,y0),到达点(m,n),返回值:1表示求出路径,0表示无路径*/PSeqStackS;DataTypetemp;intx,y,d,i,j;temp.x=x0;temp.y=y0;temp.d=-1;S=Init_SeqStack();/*初始化栈*/if(!S){printf("栈初始化失败");return(0);}Push_SeqStack(S,temp);/*迷宫入口点入栈*/while(!Empty_SeqStack(S)){Pop_SeqStack(S,&temp);x=temp.x;y=temp.y;d=temp.d+1;while(d<4)/*存在剩余方向可以搜索*/{i=x+move[d].x;j=y+move[d].y;if(maze[i][j]==0)/*此方向可走*/{temp.x=x;temp.y=y;temp.d=d;Push_SeqStack(S,temp);/*点{x,y}可以走,用栈保存可以走的路径*/x=i;y=j;maze[x][y]=-1;if(x==m&&y==n)/*迷宫有路*/{while(!Empty_SeqStack(S)){Pop_SeqStack(S,&temp);printf("(%d,%d)<-",temp.x,temp.y);/*打印可走的路径*/}Destroy_SeqStack(&S);/*销毁栈*/return1;}elsed=0;/*方向复位,从第一个方向开始试探*/}elsed++;/*试探下一个方向*/}/*while(d<4)*/}/*while*/Destroy_SeqStack(&S);/*销毁栈*/return0;/*迷宫无路*/}/*递归算法*/intmazepath1(intmaze[][n+2],itemmove[],intx,inty){/*求迷宫路径,入口参数:迷宫数组,下标移动的增量数组,开始点(x,y), 以及开始点对应的步数step,(m,n)是终点,返回值:1表示求出路径,0表示无路径*/ inti; intstep=0; step++; maze[x][y]=step; if(x==m&&y==n) return1;/*起始位置是出口,找到路径,结束*/ for(i=0;i<4;i++) { if(maze[x+move[i].x][y+move[i].y]==0) if(mazepath(maze,move,x+move[i].x,y+move[i].y)) return1;/*下一个是出口,则返回*/ } step--; maze[x][y]=0; return0;}intmain(){inti,j,k;charu;intx,y;printf("*****欢迎进入迷宫游戏*****\n");printf("~~~~~~~~游戏快乐~~~~~~~~~\n");printf("这是6*8的迷宫\n");printf("****************************\n");for(i=0;i<m+2;i++){printf("****");for(j=0;j<n+2;j++){printf("%-2d",maze[i][j]);}printf("****");printf("\n");}printf("****************************\n");printf("现在开始游戏?(y/n):");scanf("%c",&u);while(u!='n'){ printf("请输入迷宫入口坐标(x,y):"); scanf("%d,%d",&x
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 物资捐赠合同协议书模板
- 2025至2030年中国硫酸新霉素数据监测研究报告
- 2025至2030年中国玻璃马赛克数据监测研究报告
- 2025至2030年中国汽车后组合灯数据监测研究报告
- 2025至2030年中国无纺布简易衣柜数据监测研究报告
- 2025至2030年中国摄氏体温计芯片数据监测研究报告
- 2025至2030年中国尾件数据监测研究报告
- 2025至2030年中国大/小飞碟防盗硬标牌数据监测研究报告
- 2025至2030年中国双组份水性环氧胶料数据监测研究报告
- 2025至2030年中国动物油酸数据监测研究报告
- 2024-2025学年七年级下学期期中英语模拟试卷(深圳专用)(解析版)
- 电梯有限空间作业安全专项施工方案
- 竞业及保密协议
- 船舶防汛应急预案
- 2024年司法考试历年真题答案
- 2025年南昌市高三语文二模检测试卷附答案解析
- 2025年03月湖南怀化市新晃侗族自治县事业单位工作人员10人笔试历年典型考题(历年真题考点)解题思路附带答案详解
- DB32-T 5085-2025 无机涂料应用技术规程
- 用“魔法”打败“魔法”课件-2024-2025学年高二下学期班主任工作经验分享
- 考后析得失思则得未来-(班会课)段考后试卷分析培养成长型思维
- 2025年江西九江市城市发展集团有限公司招聘笔试参考题库含答案解析
评论
0/150
提交评论