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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

迷宫问题实验报告用栈解决迷宫问题Word格式.docx

1、则 删去栈顶位置; 若栈不空,则重新测试新的栈顶位置,直至找到一个可通的相邻块或出栈至栈空。 while(栈不空)三详细设计栈的设计:typedef struct Node *base,*top;int length;Stack;Stack *initstack(); /初始化栈void printstack(Stack *s); /打印栈Status destroy(Stack *); /销毁整个栈Status deltop(Stack *s); /出栈Status pushelem(Stack *,ElemType ,ElemType); /进栈 1. 主程序模块: int main()

2、printf(12的迷宫,X字符表示障碍,空符表示通路:n); Maze aNN; makemaze(a);输入回车键显示路径,*字符表示路径。 getchar(); findpath(a); while(1); return 0;2. 迷宫生产模块; void makemaze(Maze (*p)N) int i,j,conter; for(i=0;iN;+i) for(j=0;jpos=0;freq=0;move0=0;move1=0;move2=0;move3=0; (*p+j)-pos=X; (*(p+N-1)+j)- for(i=1;N-1; (*(p+i)- (*(p+i)+N-1

3、)- srand(int)time(NULL); for(conter=0;conter20;+conter) i=rand()%(N-2); j=rand()%(N-2); if(i=1&j=1|i=N-1&j=N-1) printmaze(p);3.路径查找模块。Maze *testnewpos(Maze (*p)N,Stack *s,int *i,int *j)Maze *q=NULL;int select=0;*i=*j=0;for(;q=NULL&selecttop-x)+s-y)-move0!=1 ) (*(p+s-move0=1; q=*(p+s-y+1; *i=s-x+0; *

4、j=s- / 退回前一步检查东方向是否可通 break; case 1:move1!move1=1;x+1)+s-y; *i=s-x+1;y+0; / 退回前一步检查南方向是否可通 case 2:move2!move2=1;y-1; / 退回前一步检查西方向是否可通 case 3:move3!move3=1;x-1)+s-x-1; / 退回前一步检查北方向是否可通return q;void printpath(Stack *s,Maze (*p)N) Node *n;int i,j,conter;conter=0;n=s-base;n;n=n-next) (*(p+n-x)+n-*for(i=

5、0; for(j=0; +conter; printf(FORMAT,(*(p+i)+j)-pos); if(conter%12=0) TURNLINE;TURNLINE;完整的程序:maze.h#ifndef MAZE_H#define MAZE_H#include mazepath.h#include #define N 12/10+2#define FORMAT %2c#define TURNLINE printf()typedef structchar pos;int freq;int move4;Maze;void makemaze(Maze (*p)N);void printmaz

6、e(Maze (*p)N);void findpath(Maze (*p)N);Maze *testnewpos(Maze (*p)N,Stack *,int *,int *);void printpath(Stack *s,Maze (*p)N);void makemaze(Maze (*p)N)void printmaze(Maze (*p)N)void findpath(Maze (*p)N) Maze *q=NULL; int i=1,j=1,*pi=&i,*pj=&j,success=0; Stack *s; s=initstack();/初始化用来存储路径的栈 q=*(p+1)+1

7、;/初始化当前位置为入口位置 do if(q-pos!=!(q-freq)/当前位置通且在当前路径中未被访问过,则入栈 if(i=N-2&j=N-2) pushelem(s,N-2,N-2); success=1; else if(i=1&j=1) pushelem(s,i,j); q-freq=1;/当前位置已经进栈,作标记,不能再入栈,不然就只能兜死胡同了/切换下一位置为东邻位置,并做标记,东邻位置已经使用 i=s- j=s- q=*(p+i)+j; else else/当前位置不通,则在前一步(栈顶)检查是否有其他方向可行 /printf(step here. if(s-base!=s-

8、top) do/查找新的通路直到新通路出现或者回到初始位置 q=testnewpos(p,s,&i,&j);/返回其它三个方向的其中一个和新的当前位置的坐标 if(q=NULL) deltop(s);/栈顶没有可继续往下走的通路,删除栈顶,在新的栈顶找 while(q=NULL&s-top); while(success!=1); printpath(s,p); *j=s-#endifmazepath.h#ifndef MAZEPATH_H#define MAZEPATH_H#includestdlib.h#define TRUE 1#define FALSE 0#define OK 1#de

9、fine ERROR 0#define INFEASIBLE -1#define OVERFLOW -2typedef int ElemType;typedef int Status;typedef struct nodeElemType x;ElemType y;struct node *next;struct node *prior;Node,*Postion;Stack *initstack()Stack *s;s=(Stack *)malloc(sizeof(Stack);if(!s) return ERROR;base=s-top=NULL; /栈空length=0;return s

10、;void printstack(Stack *s) Node *N;N=s-N=N-%2d %2d ,N-x,N-y);printf(nnStatus destroy(Stack *s)Node *p;p=s-while(s-base- s-next; /N=N-next和free(P)不能倒换位置,当释放p时, free(p); /如果不将N移向下一个位置,将导致N指向的内存释放,N-next不再有效 p=s-return OK;Status deltop(Stack *s)length)Underflown /已经是空栈elsetop;top=p-prior; -s-length;next=NULL; Status pushelem(Stack *s,ElemType i,ElemType j)Node *n;n=(Node *)malloc(sizeof(Node);n) return ERROR;n-x=i;y=j;if(s-length=0)top=n; n-prior=NULL;prior=s-next=n; +s-MyMain.cppmaze.hint main()四调试结果及说明1说明:本程序的运行环境为VC+6.0,执行文件为MgProblem.exe。2测试结果实际程序执行过程如下图所示:

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

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