栈和队列综合实验报告_第1页
栈和队列综合实验报告_第2页
栈和队列综合实验报告_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、. 栈和队列综合实验报告一、实验目的(1)能够利用栈和队列的基本运算进行相关操作。(2)进一步熟悉文件的应用(3)加深队列和栈的数据结构理解,逐步培养解决实际问题的编程能力。二、实验环境装有Visual C6.0的计算机。本次实验共计4学时。三、实验内容以下两个实验任选一个。1、 迷宫求解设计一个迷宫求解程序,要求如下: 以M N表示长方阵表示迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。 能任意设定的迷宫 (选作)如果有通路,列出所有通路提示: 以一个二维数组来表示迷宫,0和1分别表示迷宫中的通路和障碍,如下图迷宫数据为:111111111110010001011001000101

2、1000011001101110000110001000011010001001101110110111000000011111111111入口位置:1 1出口位置:8 8四、重要数据结构typedef structint j100;int top;栈顶指针,一直指向栈顶stack;/存放路径的栈int s42=0,0,0,0,0,0,0,0;/用于存放最近的四步路径坐标的数组,是即使改变的,即走一步,便将之前的坐标向前移一步,将最早的一步坐标覆盖掉,新的一步放入数组末尾其实功能和队列一样。其作用是用来判断是否产生了由于本程序算法产生的“田”字方格内的死循环而准备的,用于帮助跳出循环。五、实现

3、思路分析if(amn+1=0&k!=3)n+;k=1;o=0;else if(am+1n=0&k!=4)m+;k=2;o=0;else if(amn-1=0&k!=1)n-;k=3;o=0;else if(am-1n=0&k!=2)m-;k=4;o=0;elseo+;if(o=2)k=0;/向所在方格的四个方向探路,探路顺序为(顺时针),其中if判断条件内的&k!=n和每个语句块中的对k赋值是为防止其走回头路进入死循环,而最后一个else内语句是为了防止进入死路时,不能走回头路而造成的死循环。push(q,m,n);/没进行一次循环都会讲前进的路径入栈。if (pushf(&s00,m,n)=

4、0)k=3;/用来判断是否产生了由于本程序探路算法产生的“田”字方格内的死循环而准备的,用于帮助跳出田字循环。同时会将路径存入用于下次判断六、程序调试问题分析最开始写完时是没有死路回头机制的,然后添加了两步内寻路不回头机制。第二个是“田”字循环问题,解决方法是加入了一个记录最近四步用的数组和一个判断田字循环的函数pushf。int pushf(int *a,int m,int n)int j=0;if(m=a0&n=a1)/判断最新的一步是否和4步之前的走的是同一个坐标点,/从而返回判断值,以便跳出循环。return 0;while(j8)/如果没有发生田字训话,将4*2数组内的4组坐标向前移动覆盖掉最/早的一步,放入最新的一步。aj=aj+2;aj+1=aj+3;j=j+2;a6=m,a7=n;return 1;另外由于探路算法特新并不会产生3x3,4x4等的方阵循环。想到的隐藏问题:如果是3x3方阵,但中间的一块是墙的话就会产生3x3

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论