ImageVerifierCode 换一换
格式:DOCX , 页数:7 ,大小:16.62KB ,
资源ID:5862804      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5862804.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构实验报告 迷宫.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构实验报告 迷宫.docx

1、数据结构实验报告 迷宫数据结构实验报告实验三 迷宫姓名:xxx学号:xxx专业:信息安全实验日期:第十二.三周周日实验三 迷宫一、实验目的1、了解回溯法在求解迷宫问题中的应用2、进一步掌握栈的使用二、实验内容用回溯法求解迷宫问题,可以用一个栈保存探索的序列。并且在该迷宫的行走中,站在一点可以有八个方向选择。比如如下的迷宫Enter- 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 1 1 0 0 1 0 0 0 1 0 0 1 0 1 1 0 0 0 1 0 0 1 0 1 1 0 0 1 1 1 0 1 0 1 0 0 0 0 0 1 0 0 0

2、1 0 1 1 0 0 1 0 0 0 1 0 1 1 0 1 1 0 1 0 1 0 0 0 0 0 0 0 1 0 1 1 0 0 - EXIT下面是可能的路径(注意:从入口到出口可能有多条路径,优先选择的方向不同,路径可能也不一样!) Path: ( maze00, maze10, maze11, maze12, maze22, maze32, maze33, maze43, maze53, maze63, maze64, maze65, maze55, maze45, maze35, maze25, maze26, maze16, maze06, maze07, maze08, maz

3、e18, maze28, maze38, maze48, maze58, maze57, maze67, maze77, maze87, maze88, maze89, maze99)Enter- X 1 1 1 0 0 X-X-X 0 X-X-X 1 0 0 X 1 X 0 0 1 X 1 1 X-X 1 X 0 0 1 X-X 1 X 1 1 X 0 0 1 0 X 1 X 1 1 X 0 1 1 1 X 1 X 1 X-X 0 0 0 1 X-X-X 1 X 1 1 0 0 1 0 0 0 1 X 1 1 0 1 1 0 1 0 1 X- X- X 0 0 0 0 1 0 1 1 0 X

4、 - EXIT1、提示:(1)数据结构: 用二维数组MAZEm+2n+2表示迷宫的结构,数组中的值为1表示是墙,为0表示可以走通。(用MAZEm+2n+2而不用MAZEmn的原因在于想表示和编写代码的时候简单些,而且让迷宫周围都是墙,防止错误的走出去) 用二维数组MARKm+2n+2表示迷宫是否被走过,主要是为了回溯时已经证明走不通的路线就不要再去走了。(用MARKm+2n+2而不用MARKmn的原因在于想表示和编写代码的时候简单些) 二维数据MOVE82是为了更方便的移动到下一步,改变坐标。这个二维数组是为了更好的转换坐标(八个方向,从0到7),而且也能避免重复走路 用栈保存走过的路径(2)

5、输出: 迷宫布局,用0表示可以走通的地方,用1表示墙 如果能走通,则输出路径和路径的长度;若不能走通,则输出提示不能走通 带有路径的迷宫布局头文件部分#ifndef MIG_H#define MIG_Hstruct zhan int MAX; int n; int*s;typedef struct zhan*seqstack;seqstack voidzhan(int m);int isnullzhan(seqstack pastack);void yazhan(seqstack pastack,int k);void chuzhan(seqstack pastack);void nizhan

6、(seqstack pastack);int topzhan(seqstack pastack);void printzhan(seqstack pastack);void migonglujin(int maze811,int direction42,int x1,int y1,int x2,int y2,int m);#endif函数算法实现部分#includema.h#include#includeseqstack voidzhan(int m)/创建一个空栈 seqstack pastack=(seqstack)malloc(sizeof(struct zhan); if(pastac

7、k!=NULL) pastack-s=(int*)malloc(sizeof(int)*m); if(pastack-s ) pastack-MAX=m; pastack-n=-1; return pastack; else free(pastack); printf(over);return NULL;int isnullzhan(seqstack pastack)/判断栈是否为空 return(pastack-n=0);void yazhan(seqstack pastack,int k)/压栈 if(pastack-n=pastack-MAX-1) printf(不好意思,这站满人了,等

8、下一站吧,亲!); else pastack-n+; pastack-spastack-n=k; void chuzhan(seqstack pastack)/出栈 if(pastack-n=0) printf(我都空了); else pastack-n=pastack-n-1;int topzhan(seqstack pastack)/取栈顶元素 if(pastack-n=-1) printf(木有东西哦!无顶!); else return(pastack-spastack-n); void printzhan(seqstack pastack)/打印栈 int b; b=pastack-n

9、; while(b-1) printf(%d,pastack-sb); printf( );b-; void nizhan(seqstack pastack)/将栈倒置,即:逆栈 int i; for(i=0;in ;i+) printf(%d,pastack-si); printf( );void migonglujin(int maze811,int direction42,int x1,int y1,int x2,int y2,int m) int i,j,k; int g,h,x,y,d; seqstack c; c=voidzhan(m); mazex1y1=2; x=x1; y=y

10、1; d=-1; yazhan(c,x); yazhan(c,y); while(!isnullzhan(c) y=topzhan(c); chuzhan(c); x=topzhan(c); chuzhan(c); i=x; j=y; k=d+1; while(k=3) g=i+directionk0; h=j+directionk1; if(g=x2&h=y2&mazegh=0) printf(打印路径上的每一点(以-为开始端哦!且按这个方向走!); /nizhan(c); while(!isnullzhan(c) y=topzhan(c); /printf(这是Y点); /printf(%

11、d,y); chuzhan(c); x=topzhan(c); chuzhan(c); /printf(这是X点); /printf(%d,x); /chuzhan(c); /printf(); printf(%d%d,x,y);printf(-); return; if(mazegh=0) mazegh=2; x=i;y=j;d=k; yazhan(c,x); yazhan(c,y); i=g;j=h; k=-1; k=k+1; printf(the path has not been found.n);主函数部分#includema.h#includestdlib.h#includestd

12、io.hvoid main() int maze811=1,1,1,1,1,1,1,1,1,1,1, 1,0,1,0,0,1,1,1,0,0,1, 1,0,1,0,0,0,1,0,0,1,1, 1,0,1,1,1,0,0,0,1,1,1, 1,0,0,0,1,1,1,1,0,1,1, 1,1,0,0,1,0,1,1,1,1,1, 1,1,1,0,0,0,0,0,0,0,1, 1,1,1,1,1,1,1,1,1,1,1 ;int direction42=0,1,1,0,0,-1,-1,0;printf(求迷宫路径:);migonglujin(maze,direction,1,1,6,9,200);

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1