迷宫问题c++实验报告.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
迷宫问题c实验报告

数据结构实验报告 班级: 姓名: 学号: 组员: 问题描述: 迷宫实验是取自心理学的一个古典实验。在该实验中,把一只老鼠从一个无顶大盒子的门放入,在盒中设置了许多墙,对行进方向形成了多处阻挡。盒子仅有一个出口,在出口处放置一块奶酪,吸引老鼠在迷宫中寻找道路以到达出口。对同一只老鼠重复进行上述实验,一直到老鼠从入口到出口,而不走错一步。老鼠经多次试验终于得到它学习走迷宫的路线。 设计功能要求: 迷宫由m行n列的二维数组设置,0表示无障碍,1表示有障碍。设入口为(1,1),出口为(m,n),每次只能从一个无障碍单元移到周围四个方向上任一无障碍单元。编程实现对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。 算法输入:代表迷宫入口的坐标 算法输出:穿过迷宫的结果。 算法要点:创建迷宫,试探法查找路 任务分派 为了达到锻炼大家独立设计算法的能力,大家一致决定,先自己独立设计算法,不论算法的好坏、难易,完完全全出自于自己的手中。 在大家独立完成算法后,进行小组集中讨论,将自己的算法思想与大家交流,特别是自己最自豪的部分或是自己觉得可以改进的地方,之后得出最优结果。 独立设计 求解思想: 利用递归的方式进行求解。从入口出发,按某一方向向前探索,若能走通(未走过的),即某处可以到达,则到达新点,否则试探下一方向;若所有的方向均没有通路,则沿原路返回前一点,换下一个方向再继续试探,直到所有可能的通路都探索到,或找到一条通路,或无路可走又返回到入口点。 如果现在位置(i,j)处于迷宫的边界位置,则有2种或3种可能的走法,为使问题简单化,用maze[m+2][n+2]来表示迷宫,而迷宫的四周的值全部为1,这样做使问题简单了,每个点的试探方向全部为4,不用再判断当前点的试探方向有几个,同时与迷宫周围是墙壁这一实际问题相一致。 struct Pos { int x,y; int di; }; 其中x、y分别表示横纵坐标值、di表示前进的方向。 在已经某一位置(i, j, d)的情况下,其下一个位置横、纵坐标的取值如表4-2所示。而走到一个新位置时,其方向值初始置为1。 代码 #include iostream #include iomanip using namespace std; struct Pos { int x,y; int di; }; typedef Pos ElemType; struct StackNode { ElemType data; struct StackNode *next; }; class LinkStack { private: StackNode *top; public: LinkStack();//无参构造函数 ~LinkStack();//析构函数 void ClearStack();//将栈清空 bool Push(ElemType x); //进栈 bool Pop(ElemType x);//出栈 bool GetTop(ElemType x);//取栈顶元素 bool StackEmpty(); //判断栈是否为空栈 int StackLength(); //栈的长度 }; LinkStack::LinkStack() { top=NULL; } LinkStack::~LinkStack() { StackNode *p; while(top!=NULL) { p=top; top=top-next; delete p; } } bool LinkStack::StackEmpty() { if(!top) return true; return false; } int LinkStack::StackLength() { StackNode *p=top; int count=0; while(p) { count++; p=p-next; } return count; } bool LinkStack::Push(ElemType x) { StackNode *p; p=new StackNode; p-data=x; p-next=top; top=p; return true; } bool LinkStack::Pop(ElemType x) { if(StackEmpty()) return false; else { StackNode *p=top; x=top-data; top=top-next; delete p; return true; } } bool LinkStac

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档