您好,欢迎访问三七文档
---------------------------------精选公文范文------------------------------------------精选公文范文----------------1迷宫问题实验报告篇一:迷宫问题实验报告武汉纺织大学数学与计算机学院数据结构课程设计报告迷宫问题求解学生姓名:学号:班级:指导老师:报告日期:一、问题描述以一个mxn的长方矩阵表示迷宫,1和0分别表示迷宫中的通路和障碍。设计一个程序,对任意设定的迷宫,求出从入口到出口的通路,或者没有通路的结论。二、需求分析1、以二维数组maze[10][10]表示迷宫,数组中以元素1表示通路,0表示障碍,迷宫的大小理论上可以不限制,但现在只提供10*10大小迷宫。2、迷宫的入口和出口需由用户自行设置。3、以长方形矩阵的形式将迷宫及其通路输出,输出中“#”表示---------------------------------精选公文范文------------------------------------------精选公文范文----------------2迷宫通路,“1”表示障碍。4、本程序只求出一条成功的通路。但是只要对函数进行小量的修改,就可以求出其他全部的路径。5、程序执行命令为:(1)输入迷宫;(2)、求解迷宫;(3)、输出迷宫。三、概要设计1、设定栈的抽象数据类型定义:ADTzhan{基本操作:InitStack操作结果:构造一个空栈push(*s,*e)初始条件:栈已经存在操作结果:将e所指向的数据加入到栈s中pop(*s,*e)初始条件:栈已经存在操作结果:若栈不为空,用e返回栈顶元素,并删除栈顶元素getpop(*s,*e)初始条件:栈已经存在操作结果:若栈不为空,用e返回栈顶元素stackempty---------------------------------精选公文范文------------------------------------------精选公文范文----------------3初始条件:栈已经存在操作结果:判断栈是否为空。若栈为空,返回1,否则返回0}ADTzhan2、设定迷宫的抽象数据类型定义ADTmigong{基本操作:Statusprint;//显示迷宫StatusPass;//判断当前位置是否可通StatusFootPrint;//标记当前位置已经走过StatusMarkPrint;//标记当前位置不可通PosTypeNextPos;//进入下一位置}ADTyanshu3、本程序包括三个模块a、主程序模块voidmain{初始化;迷宫求解;迷宫输出;}b、栈模块——实现栈的抽象数据类型c、迷宫模块——实现迷宫的抽象---------------------------------精选公文范文------------------------------------------精选公文范文----------------4数据类型四、流程图五、数据结构typedefstruct//位置结构{introw;//行位置intcol;//列位置}PosType;typedefstruct//迷宫类型{intarr[10][10];}MazeType;typedefstruct{intstep;//当前位置在路径上的”序号”PosTypeseat;//当前的坐标位置DirectiveTypedi;//往下一个坐标位置的方向}SElemType;typedefstruct//栈类型{SElemType*base;//栈的尾指针SElemType*top;//栈的头指针intstacksize;//栈的大小}SqStack;六、调试结果和分析---------------------------------精选公文范文------------------------------------------精选公文范文----------------5a)测试结果实际程序执行过程如下图所示:篇二:迷宫求解实验报告数据结构(迷宫求解实验报告)一、实验构思(Conceive)(本部分应包括:描述实验实现的基本思路,包括所用到的离散数学、工程数学、程序设计、算法等相关知识)实验实现基本思路:若当前位置可通,则纳入当前路径,并继续朝下一个位置探索,即切换下一位置为当前位置,如此重复直至到达出口;若当前位置不可通,则应顺着来向退回到前一通道块,然后朝着除来向之外的其他方向继续探索;若该通道块的四周4个方块均不可通,则应从当前路径上删除该通道块。设以栈记录当前路径,则栈顶中存放的是当前路径上最后一个通道块。由此,纳入路径的操作即为当前位置入栈;从当前路径上删除前一通道块的才操作即为出栈。---------------------------------精选公文范文------------------------------------------精选公文范文----------------6二、实验设计(本部分应包括:抽象数据类型的功能规格说明、主程序模块、各子程序模块的伪码说明,主程序模块与各子程序模块间的调用关系)抽象数据类型:typedefstruct{intx;//当前位置的横坐标inty;//当前位置的纵坐标chartype;//当前位置的属性:墙壁或通道boolisfoot;//判断当位置是否已走过,true代表已走过}Position;//当前位置信息typedefstruct{intorder;//脚步在地图上的序号Positionseat;//行走的当前位置intaspect;//下一步的方向}Block;//脚步typedefstruct{---------------------------------精选公文范文------------------------------------------精选公文范文----------------7intwidth;//地图的长度intheight;//地图的宽度Position*site;//地图内的各个位置}Maze;//地图typedefstruct{Block*base;Block*top;intlength;intstacksize;}Stack;主程序模块:intmain{Positionstart,end;Blockblk;StackS;intwidth,height;printf;printf;scanf;---------------------------------精选公文范文------------------------------------------精选公文范文----------------8printf;scanf;Maze*maze=GreatMaze;PrintMaze;printf;printf;scanf;printf;scanf;printf;scanf;printf;scanf;MazePath;printf;printf;StackSa;InitStack;while{Pop;Push;}while{Pop;ifprintf;//打印足迹elseprintf;//打印---------------------------------精选公文范文------------------------------------------精选公文范文----------------9最后一步}}各子程序函数:Maze*GreatMaze//创建地图voidPrintMaze//打印地图intPositionComparison//判断当前位置是否合法intPass//判断当前位置是否可以前进或者是否走过voidFootSet//留下足迹PositionNextPos//判断方向IntMazePath//搜索从入口到出口的路径三、实现描述(Implement)(本部分应包括:抽象数据类型具体实现的函数原型说明、关键操作实现的伪码算法、函数设计、函数间的调用关系,关键的程序流程图等,给出关键算法的时间复杂度分析。)函数间的调用关系:详见打印版实验报告迷宫求解流程图路径搜索算法:---------------------------------精选公文范文------------------------------------------精选公文范文----------------10Do{若当前位置可通,则{将当前位置插入栈顶;//纳入通路若该位置是出口位置,则结束;//求得路径存放在栈中否则切换当前位置的东邻方块为新的当前位置;}:否则,若栈不空切栈顶位置尚有其他方向未经探索,则设定新的当前位置为沿顺时针方向旋转找到的栈顶位置的下一相邻块;若栈不空但栈顶位置的四周均不可通;则{删去栈顶位置;//从路径中删除该通道块若栈不空,则重新测试新的栈顶位---------------------------------精选公文范文------------------------------------------精选公文范文----------------11置,直至找到一个可通的相邻块或出栈至栈空四、测试结果(Testing)(本部分应包括:对实验的测试结果,应具体列出每次测试所输入的数据以及输出的数据,并对测试结果进行分析总结)篇三:迷宫实验实验报告迷宫实验一.摘要迷宫实验主要是要探讨研究一个人只靠自己的动觉,触觉和记忆获得信息的情况下,如何学会在空间中定向。本实验的被试是华东师范大学应用心理学系大二的一名女同学,本实验以学习遍数为自变量,以所用时间和错误次数为因变量,让被试在排除视觉条件下,用小棒从迷宫起点凹槽移动到达终点,其间小棒每次进入盲巷并与盲巷末端金属片接触算一次错误,学会的定义为连续三遍不出错。而且主试也不能给予被---------------------------------精选公文范文------------------------------------------精选公文范文----------------12试任何提示或暗示。被试要运用动觉,思维,记忆等自己认为有效的方法独立完成。测试中为了控制疲劳带来的误差,若被试感到疲劳,可稍事休息再进行实验。分析实验数据可知,被试走完迷宫所用时间成减少趋势,错误次数也成减少趋势。在最初几次走迷宫时,错误次数会出现反复的时多时少的情况,所用时间也在反复,时多时少,这表明被试在摸索迷宫路线,处于对整个迷宫的整体定位中。随着学习遍数的增加,错误次数与走完一次迷宫所用的时间开始减少,这表明被试对于迷宫的整体情况有了比较清楚的了解。关键词迷宫学习次数学习时间错误次数二.引言人类从十九世纪末就开始研究迷宫学习了。1899年,斯莫尔让白鼠学习一条相当复杂的迷津通路。通过研究他认为,白鼠迷宫学习所依靠的主要是触觉和动觉记忆。1912年希克思和卡尔把---------------------------------精选公文范文------------------------------------------精选公文范文----------------13迷宫用于研究人类学习。泊金斯(Perkins,1927)最早使用这种在手指迷宫的基础上发展起来的最简便、最常用的触棒迷宫(pencilmaze)。近年来,学者们则利用迷宫进行逆反学习能力的研究。而在特殊教育领域,也利用迷宫队正常人和盲人进行了触棒迷宫的对比试验,并得出了盲人心理的巨大补偿作用和学习潜能的结论。迷宫是研究一个人只靠自己的动觉、触觉和记忆获得信息的情况下,如何学会在空间中定向。迷宫的种类很多,结构方式也不一样,但是有一个特征,这就是有一条从起点到终点的正确途径与从此分出的若干条盲巷。被试的任务是寻找与巩固掌握这条正确途径。迷宫的学习一般可分为四个阶段:1.一般方位辨认。2.掌握迷宫的首段、尾段和中间的一、二部分。3.扩大可掌握的部分,直至全部掌握空间图形。4.形成集体对空间图形的自动化操作。迷宫学
本文标题:迷宫问题实验报告
链接地址:https://www.777doc.com/doc-1765789 .html