电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

栈和队列及其应用实验报告VIP免费

栈和队列及其应用实验报告_第1页
1/4
栈和队列及其应用实验报告_第2页
2/4
栈和队列及其应用实验报告_第3页
3/4
栈和队列及其应用一、实习目的与要求1、熟练掌握栈和队列结构的概念、结构特点及相关操作(构造、入/出栈(队列)等);2、熟悉顺序栈和链式栈,循环队列和链式队列结构的特点及异同;3、选择并设计合适的栈或队列结构解决实际应用问题。4、从以下题目选择至少1题完成。二、实习题目【题目】火烧连营【问题描述】“火烧连营”是三国演义中的著名典故之一广为流传,假定文本文件c1.txt是火烧连营中的军营分布图,每个字符A代表一个营帐,营帐是可燃物,其他字符代表不可燃的空白地段,文件共有40行70列。【基本要求】请你编写程序,读入文本文件的内容。提供MFC界面,输入任意点的x和y值(x<70,y<40)作为着火点,“火烧连营”后,被燃烧的营帐标上字符’X’,并把整个结果输出到文件c2.txt中。【实现提示】基本思想:从着火点位置开始,按四连通思想上下左右寻找其邻居点……实现思路:开辟一个堆栈,先将着火点压栈,然后重复以下操作:栈顶点出栈并标记‘X’,同时将符合被燃烧条件的邻居点入栈……,直到栈空为止。输出:X序列,搜索可以燃烧的字符!【测试数据】c1.txt【算法分析与设计】1、问题分析与设计思想该程序的实现需要做到文件的输入输出,栈的应用,以及MFC的使用。读取文件中的数据,然后储存在数组中,在利用算法实现其中字符的改变,最后再将字符存入文件中,保存起来。算法实现思想:开辟一个堆栈,从着火点位置开始,按四连通思想上下左右寻找其邻居点,先将着火点压栈,然后重复以下操作:栈顶点出栈并标记‘X’,同时将符合被燃烧条件的邻居点入栈……,直到栈空为止。2、出现的问题及解决办法1.读取文件数据将其储存到数组中去:使用fstream的头文件以及循环成功将数据导入。2.函数的参数传递问题。二位数组作参数传递,得把每个数组的首地址传过去才行。3.压栈问题。需要压栈的是二位数组的下标,是一个坐标。解决方法有两个:一是定义一个Point类,作为坐标。二则是利用出入栈的有序性,两个数一组。4.文件输出问题。文件新建的位置需要自定义,但是我想要的是在当前目录下创建。最后使用windows下的一个能够获得当前路径的函数解决这个问题。5.MFC的实现。不懂MFC的使用,研究了好大一会儿你,最后放弃了。3、效率分析与改进设想根据设计思想,该程序的时间效率为O(n)。由于设计思想和基本算法没有变化,所以其在效率上改进方法还未想到。【源代码】见附件。【运行结果】三、实习小结通过这次的实习的实习我的收获有:1.熟悉了文件的输入输出流。2.学会了在当前目录下创建文件的方法。3.熟悉并巩固了二维数组的参数传递问题。4.掌握栈和队列结构的概念、结构特点及相关操作(构造、入/出栈(队列)等)。5.熟悉顺序栈和链式栈,循环队列和链式队列结构的特点及异同。不足之处:1.没有使用MFC做到数据输入。2.在编程过程中不熟悉C++的基本规则,经常要翻书。3.还没有真正学会调试,以至于走了不少弯路。

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

栈和队列及其应用实验报告

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部