欢迎来到天天文库
浏览记录
ID:61499171
大小:144.50 KB
页数:10页
时间:2021-02-07
《《数据结构》上机实验报告(迷宫求解).doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、(说明:实验报告必须包含下面的每项内容,根据实验情况认真填写,封面必须打印或复印(A4纸),书写上机实验报告内容的纸张也用A4纸,最后从侧面装订)一【上机实验目的】1.了解栈的应用2.编写迷宫程序二【实验环境】PC机每人1台三【上机实验内容】(此次上机实验老师布置的具体任务)迷宫求解主要利用栈实现,要求能动态生成迷宫,显示有几条路径,用图形界面显示最合适的路径。四【上机调试程序流程图】(注:可打印)(用传统流程图的形式表示)五【上机调试中出现的错误信息、错误原因及解决办法】(记录下你调试程序中出现的错误信息的英文提示,分析出错
2、原因及可能的解决办法)1.马虎造成的错误2.程序的逻辑有问题3.语法用错调试过程中,将整个程序分为一个个子块,逐个解决六【上机调试后的源程序及还存在的问题】(注:源程序可打印)(同时记录下你对你编写此程序的其它具体想法,)#include#include#include#includeusingnamespacestd;#defineOVERFLOW0#defineOK1#defineERROE0#defineTRUE1#defineFALSE0#defineSI
3、ZE102//迷宫的最大范围typedefintStatus;typedefstruct{intx;inty;}PosType;//坐标位置typedefstruct{PosTypeseat;//通道块在迷宫中的"坐标位置"intdi;//从上一通道块走向此通道块的"方向"}SElemType;StatusCheck(char&choice);//确认输入正确voidRandom(intmg[SIZE][SIZE],intsize,PosTypestart,PosTypeend){inti,j,k;srand(time(NUL
4、L));for(j=0;j5、x]=0;//将入口、出口设置为"0"即可通过}StatusPass(PosTypee,intmg[SIZE][SIZE]){if(mg[e.y][e.x]==0)//0时可以通过returnOK;//如果当前位置是可以通过,返回1returnOVERFLOW;//其它情况返回0}StatusFootPrint(PosTypee,intmg[SIZE][SIZE]){mg[e.y][e.x]=7;returnOK;}PosTypeNextPos(PosTypee,intdir){PosTypeE;switch(dir){cas6、e1:E.x=e.x+1;//向右E.y=e.y;break;case2:E.x=e.x;//向下E.y=e.y+1;break;case3:E.x=e.x-1;//向左E.y=e.y;break;case4:E.x=e.x;//向上E.y=e.y-1;break;}returnE;}StatusEqual(PosTypee1,PosTypee2){if((e1.x==e2.x)&&(e1.y==e2.y))returnTRUE;returnFALSE;}StatusMarkPath(PosTypee,intmg[SIZE][7、SIZE],intdi){switch(di){case1://向右mg[e.y][e.x]=11;break;case2://向下mg[e.y][e.x]=12;break;case3://向左mg[e.y][e.x]=13;break;case4://向上mg[e.y][e.x]=14;break;}returnOK;}PosTypeFrontPos(PosTypee,intdir){PosTypeE;switch(dir){case1:E.x=e.x-1;//向左E.y=e.y;break;case2:E.x=e.x;/8、/向上E.y=e.y-1;break;case3:E.x=e.x+1;//向右E.y=e.y;break;case4:E.x=e.x;//向下E.y=e.y+1;break;}returnE;}StatusPathPrint(stacks,intmg[S
5、x]=0;//将入口、出口设置为"0"即可通过}StatusPass(PosTypee,intmg[SIZE][SIZE]){if(mg[e.y][e.x]==0)//0时可以通过returnOK;//如果当前位置是可以通过,返回1returnOVERFLOW;//其它情况返回0}StatusFootPrint(PosTypee,intmg[SIZE][SIZE]){mg[e.y][e.x]=7;returnOK;}PosTypeNextPos(PosTypee,intdir){PosTypeE;switch(dir){cas
6、e1:E.x=e.x+1;//向右E.y=e.y;break;case2:E.x=e.x;//向下E.y=e.y+1;break;case3:E.x=e.x-1;//向左E.y=e.y;break;case4:E.x=e.x;//向上E.y=e.y-1;break;}returnE;}StatusEqual(PosTypee1,PosTypee2){if((e1.x==e2.x)&&(e1.y==e2.y))returnTRUE;returnFALSE;}StatusMarkPath(PosTypee,intmg[SIZE][
7、SIZE],intdi){switch(di){case1://向右mg[e.y][e.x]=11;break;case2://向下mg[e.y][e.x]=12;break;case3://向左mg[e.y][e.x]=13;break;case4://向上mg[e.y][e.x]=14;break;}returnOK;}PosTypeFrontPos(PosTypee,intdir){PosTypeE;switch(dir){case1:E.x=e.x-1;//向左E.y=e.y;break;case2:E.x=e.x;/
8、/向上E.y=e.y-1;break;case3:E.x=e.x+1;//向右E.y=e.y;break;case4:E.x=e.x;//向下E.y=e.y+1;break;}returnE;}StatusPathPrint(stacks,intmg[S
此文档下载收益归作者所有