数据结构线性表实验报告内容实例

上传人:鲁** 文档编号:569355171 上传时间:2024-07-29 格式:PPT 页数:12 大小:111KB
返回 下载 相关 举报
数据结构线性表实验报告内容实例_第1页
第1页 / 共12页
数据结构线性表实验报告内容实例_第2页
第2页 / 共12页
数据结构线性表实验报告内容实例_第3页
第3页 / 共12页
数据结构线性表实验报告内容实例_第4页
第4页 / 共12页
数据结构线性表实验报告内容实例_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《数据结构线性表实验报告内容实例》由会员分享,可在线阅读,更多相关《数据结构线性表实验报告内容实例(12页珍藏版)》请在金锄头文库上搜索。

1、实验报告内容:实验题目:1、问题描述及分析2、设计(1)数据结构设计(2)算法设计3、实现(1)程序结构描述(2)完整程序(3)测试数据及预期结果4、调试与分析(1)实验结果(2)与预期结果比较并分析5、总结:本次实验完成的内容、体会实验要求:1、为确保上机实验的效果,在 上机实验之前要作好充分准备工作,写好实验报告1-32、 实验过程根据需要可以用红笔红笔修改实验报告3、 实验结束填写实验报告4-54 、实验报告在上机结束后当场提交。 附录:实验报告样本实验题目:利用栈实现迷宫的求解1、问题描述及分析问题描述:心理学家把一只老鼠从一个无顶盖的大盒子的入口处赶进迷宫。迷宫中设置很多墙壁,对前进

2、方向形成了多处障碍,心理学家在迷宫的唯一出口放置了一块奶酪,吸引老鼠在迷宫中寻找通路以到达出口。分析:迷宫可以用二维数组表示,该问题可以归结为寻找一条从入口到出口的路径。2、设计: 1)数据结构的设计 (1)迷宫的表示 设迷宫为m行n列,利用二维数组mazemn来表示一个迷宫,其中(1,1)为入口,(m,n)为出口, mazemn=0或1,其中0表示通路,1表示不通。 011101111010111101000001011101111001100001100110123 45 67 8123456入口出口011101111010111101000001011101111001100001100

3、110迷宫定义#define m 6#define n 8int mazem+2n+2 当从某点向试探时,之间点有8个方向可以试探,而四个角点有3个方向,其他边缘点有5个方向,为使问题简单化,在迷宫的四周加了一层,表示墙壁,这样每个点的试探方向为8。11111111111111111111111111111111123 45 67 8 9012345670 (2)试探方向的表示 在上述表示迷宫的情况下,每个点有8个方向可以试探,设当前点的坐标为(x,y),与其相邻的8个点的坐标可根据与该点的相邻方位得到。为了方便求出新点的坐标,将从正东开始沿顺时针进行的这8个方向的坐标增量放在一个结构数组mo

4、ve8中,其中x表示横坐标增量,y表示纵坐标增量。(x,y+1)(x,y-1)(x-1,y)(x+1,y)(x+1,y+1)(x-1,y+1)(x-1,y-1)(x+1,y-1)(x,y)试探方向的表示typedef struct int x,y;item;item move8= 0,1, 1,1, 1,0,1,-1, 0,-1, -1,-1, -1,0,-1,1 ; (3)栈的表示 当到达了某点无路可走,需从前一点的下一个方向试探。因此,压入栈中的不仅是顺序到达的各点的坐标,而且还有从前一点到达本点的方向序号。栈的表示#define MAXSIZE 20typedef struct int

5、x,y,d; datatype;typedef struct datatype dataMAXSIZE; int top; SeqStack; 2)算法的设计 (2)防止重复到达某点的考虑 为避免发生死循环,当到达某点(i,j)后,使mazeij置-1,以便区分未到达过的顶点。算法结束前可恢复原迷宫。1,1,-1top(1)算法基本思想描述: 利用回溯法,从入口处出发,按某一方向不断试探,若能走通,则到达新点,否则试探另一未试探过的方向。若所有的方向均没有通路,则沿原路返回前一点,换一个未试探过的通路继续试探,直到找到出口,或所有的通路都试探过,未找到一条通路回到出口点。 在试探过程中,为保证

6、在到达某一点无路时,能正确返回前一点,需要用一个栈来保存到达的每一点的位置及试探方向。(3)算法描述 int path(int mazem+2n+2,item move8,sepstack s) /*maze为迷宫,move为试探方向,s是一个栈,保存试探中的各个顶点和试探方向,算法结束时,栈中保存的就是一条迷宫的通路。找到路径返回1,否则为0*/ 栈初始化; 将入口点坐标及初始试探方向(设为-1)入栈; 将入口点设置为已走过; 设置found为0(未找到出口点); while(未找到&栈非空) 将栈顶元素赋值给x; 从x点出发寻找下一个可以走的方位; if(找到方位) 修改栈顶元素的方位值;

7、 计算新点,并设置为已走过; 将新点位置及初始试探方位值进栈; if(新点是结束点) found=1; else /没找到可走的方位,说明从该点出发已无路可走 出栈; if(找到)return 1; else return 0; 3、实现(1)程序结构 该程序包含1个主程序 main ,和三个子程序: a、迷宫初始化:int initmaze(int mazem+2n+2) b、寻找路径:int path(int mazem+2n+2,item move8,sepstack *s) c、输出路径:void printpath(seqstack s) (2)完整程序(略)(3) 测试数据及预期结果 输入迷宫数据如右图: 输出路径为(1,1,1)(2,2,1)(3,3,0) (3,4,0)(3,5,0)(3,6,3)(4,5,1)(5,6,0) (5,7,0)(5,8,2)01110111101011110100000101110111100110000110011011111111111111111111111111111111123 45 67 8 90123456704、调试与分析(略)(1)实验结果(2)与预期结果比较并分析5、总结: 本次实验实际完成的内容,如果没有完成实验,则分析原因及如何改进。如果完成了实验,则写感受。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号