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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

实验三栈与队列的应用Word文档下载推荐.docx

1、2)输入迷宫内容 四、 概要设计为了实现上述程序功能,需要定义1、 Stack类class Stackprivate:LinkNode *top; /指向第一个结点的栈顶指针public:Stack(); /构造函数,置空栈Stack(); /析构函数void Push(T e); /把元素data压入栈中T Pop(); /使栈顶元素出栈T GetPop(); /取出栈顶元素void Clear(); /把栈清空bool empty(); /判断栈是否为空,如果为空则返回1,否则返回0;2、 描述迷宫中当前位置的T类class T /定义描述迷宫中当前位置的结构类型int x; /x代表当前

2、位置的行坐标int y; /y代表当前位置的列坐标int dir; /0:无效,1:东,2:南,3:西,4:北3、 链表结点的LinkNode类class LinkNode /链表结点friend class Stack;T data;LinkNode *next;4、本程序包含三个模块1)主程序:协调各函数的调用,实现所要求的功能;2)三个类的定义:3)迷宫:迷宫的创建,路径的寻找以及输出;4)各模块之间的调用关系如下:主程序模块迷宫模块 五、 详细设计1、描述迷宫中当前位置的T类的定义2、描述链表结点的LinkNode类的定义3、描述栈的类的定义Stack:Stack() /构造函数,置空

3、栈top=NULL;Stack() /析构函数void Stack:Push(T e) /把元素x压入栈中LinkNode *P;P=new LinkNode;P-data=e;next=top;top=P;T Stack:Pop() /使栈顶元素出栈T Temp;P=top;top=top-next;Temp=P-data;delete P;return Temp;GetPop() /取出栈顶元素return top-Clear() /把栈清空bool Stack:empty() /判断栈是否为空,如果为空则返回1,否则返回0if(top=NULL) return 1;else return

4、 0;4、迷宫的获取int* GetMaze(int &m,int &n)/返回存取迷宫的二维指针int *maze; /定义二维指针存取迷宫int i=0,j=0;coutab; /输入迷宫的长和宽请输入迷宫内容:nm=a;n=b; /m,n分别代表迷宫的行数和列数maze=new int *m+2; /申请长度等于行数加2的二级指针for(i= 0;im+2;i+) /申请每个二维指针的空间mazei=new intn+2;for(i=1;=m;i+) /输入迷宫的内容,0代表可通,1代表不通for(j=1;j=n;j+)mazeij;for(i=0;i+)/为迷宫的外圈设置障碍mazei

5、0=mazein+1=1;n+2;i+)maze0i=mazem+1i=1;return maze; /返回存贮迷宫的二维指针maze5、迷宫路径的寻找bool Mazepath(int *maze,int m,int n)/寻找迷宫maze中从(0,0)到(m,n)的路径/到则返回true,否则返回falseStack q,p; /定义栈p、q,分别存探索迷宫的过程和存储路径T Temp1,Temp2; int x,y,loop;Temp1.x=1;Temp1.y=1;q.Push(Temp1); /将入口位置入栈p.Push(Temp1);maze11=-1; /标志入口位置已到达过whi

6、le(!q.empty() /栈q非空,则反复探索Temp2=q.GetPop(); /获取栈顶元素if(!(p.GetPop().x=q.GetPop().x&p.GetPop().y=q.GetPop().y) p.Push(Temp2);/如果有新位置入栈,则把上一个探索的位置存入栈pfor(loop=0;loopdata=p.Pop(); /取栈p的顶点元素,即第一个位置t.Push(temp-data); /第一个位置入栈tdelete temp; /释放空间p.empty() /栈p非空,则反复转移 /获取下一个位置/得到行走方向a=t.GetPop().x-temp-data.x

7、; /行坐标方向b=t.GetPop().y-temp-data.y; /列坐标方向if(a=1) temp-data.dir=1; /方向向下,用1表示else if(b=1) temp-data.dir=2; /方向向右,用2表示else if(a=-1) temp-data.dir=3; /方向向上,用3表示else if(b=-1) temp-data.dir=4; /方向向左,用4表示 /把新位置入栈/输出路径,包括行坐标,列坐标,下一个位置方向t.empty() /栈非空,继续输出data=t.Pop();(data.x,data.ydata.dir, /输出行坐标,列坐标swit

8、ch(data.dir) /输出相应的方向 case 1:)nbreak;case 2:)ncase 3:)ncase 4:)ncase 0:)n7、迷宫的恢复void Restore(int *maze,int m,int n) /恢复迷宫int i,j;i+) /遍历指针for(j=0;j+) if(mazeij=-1) /恢复探索过位置,即把-1恢复为0mazeij=0;8、main函数int main()int m=0,n=0; /定义迷宫的长和宽maze=GetMaze(m,n); /调用GetMaze(int &n)函数,得到迷宫if(Mazepath(maze,m,n) /调用M

9、azepath(int *maze,int m,int n)函数获取路径迷宫路径探索成功!else cout路径不存在!9、函数的调用关系图反映了演示程序的层次结构:main GetMaze(m,n) bool Mazepath(int *maze,int m,int n)PrintPath(Stack p) void Restore(int *maze,int m,int n) 六、 调试分析1、 刚开始是混淆了c语言和c+语言的不同,从而忽略了&的用法,致使编写时费了许多时间去纠正错误;2、 本程序的模块划分简单而合理,在操作方面比较容易3、 本实验程序设计中,将程序分为三个模块,使得设计

10、时思路清晰,实现时调试顺利,各模块具有较好的可重用性,确实得到了一次良好的程序设计训练。七、 测试结果输入4 3后输入迷宫的内容为0 0 10 1 00 0 01 0 0数字化方向指:方向向下,用1表示;方向向右,用2表示;方向向上,用3表示;方向向左,用4表示八、实验总结通过对实验的认真处理以及认真对待,对栈的相关性质得到了充分的认识,对算法与程序的转变有了一定的了解,为以后做了一定的基础。组员间相互配合不是很好,希望能再接再厉。注:模块分工柴春霞(2010100245)main函数的建立以及类的定义郝瑞峰(2010100226)迷宫的获取与路径查询张贞锋(2010100208)路径输出与迷宫的恢复

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

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