《数据结构与算法设计》
课程设计任务书。
数据结构与算法设计课程设计。
1.程序设计说明书。
设计题目】走迷宫。
问题描述】迷宫问题,就是在一个指定的迷宫中求出从入口到出口的路径。使用递归算法,使用栈作为辅助结构,使用队列作为辅助结构,并设计图形用户界面提供迷宫大小、入口及出口位置和初始状态等,演示走迷宫的过程和结果。达到界面美观,操作方便。
算法思想】(1)主程序模板设计;
(2)实现整个控制面板内组件的布局管理;
(3)实现走迷宫的算法;
(4)设置控制面板;
(5)使用线性结构;
6) 使用递归算法,使用栈和队列作为辅助结构。
存储结构设计】
(1) 顺序栈存储结构。
示意图如下。
入栈出栈。top
采用直接递归的方式,用栈迷宫实现路径的输出。
2)为寻求最短路径,采用广度优先搜索算法,使用队列实现路径存储。
模块流程图】
1)搜索算法流程图如下所示:
迷宫图算法流程图。
n 循环结束。
无解迷宫。y
n有解迷宫。
总体设计方案】
1 本程序主要使用的j**a awt和j**a swing包。
import
import
import
2 本程序包含三个模块:
(1) 主程序模块。
2)ui模块——实现整个控制面板内组件的布局管理;
3)walking模块——实现走迷宫的算法;
界面设计】进入演示程序后即显示图形用户界面。
用户手册】(1)本程序的运行环境为j**a
(2)进入演示程序后即显示图形用户界面:
(3)单击“开始”按钮即可开始走迷宫。
(4)单击“清空”按钮后可重新设置迷宫。
(5)点击“恢复”按钮可消除搜寻迷宫通路留下的痕迹,点击“开始”可重新搜寻迷宫通路。
(6)点击“重置”可复位,即显示出原先的迷宫。
(7)进度条可控制搜寻迷宫通路过程的速度。
2 程序调试。
在设计走迷宫算法的过程中,我主要是利用递归求解和入栈,出栈来解决的。从起点开始出发,每次都首先使自身节点右边的节点入栈,当遇到障碍物时,使下方节点入栈,又遇到障碍物时使左方节点入栈,再使上方节点入栈,依次类推。走过的节点也算作障碍物,直到找到一条通路。
再将通路节点一次出栈,并将字体颜色设置为红色。
经过调试分析,本程序能够完成需求分析的各项需求。
3 程序测试结果。
程序运行截图】
1)单击“开始”按钮即可开始走迷宫,迷宫运行后如图:
红色数字部分为其中一条通路。
2)单击“清空”按钮后可重新设置迷宫如图:
3)重新设置迷宫路线,点击“开始”按钮迷宫新路线如图:
红色数字部分为其中一条通路。
红色数字部分为其中一条通路。
程序性能评价】
“走迷宫”游戏的基本功能都已实现,用户可自己设定墙,达到改变迷宫路线的目的。本程序主要使用了j**a awt包和j**a swing包。在求解迷宫算法的设计中,有一条通路,路径唯一。
性能改进方向】
本程序只能输出一条最短路径,怎样能输出所有最短路径?将同一深度的节点全部遍历,如果后续还有同样长度的路径则输出该路径,如果没有则只有一条最短路径。
收获及体会】
从一个小小的迷宫问题,引出了许多知识。从迷宫基本的递归和栈的运用和理解,再到队列的运用,将很多知识点串联起来了,加深了理解。通过这次“走迷宫”游戏的设计让我明白了理论与实践相结合的重要性,只有理论知识是远远不够的,要想写好一个课程设计,必须有理论与实践结合。
在设计的过程中遇到各种问题,困难很大,通过请教别人和查阅课件,最终完成了报告。
4源程序**。
本程序主要使用j**a awt和j**a swing包。
import
import
import
1)主程序模块。
package migong;
import
import
* title: maze global class
public class main ,true, false, false, false, true, false, true, true, true, true,false, false, false, true, }true, false, true, false, true, false, false, false, false, true,true, false, true, true, }true, false, true, false, true, false, true, true, true, false,true, false, true, false, }true, true, true, false, false, false, true, false, true, false,true, false, true, true, }true, false, true, true, true, true, true, false, true, false,true, false, false, true, }true, false, true, true, true, true, true, false, true, false,true, false, true, true, }true, false, false, false, false, false, true, true, true, false,true, false, true, false, }true, false, true, true, true, false, false, false, false, false,true, false, true, true, }true, false, true, false, true, false, true, true, true, true,true, false, false, true, }true, false, true, false, true, false, true, false, false, false,false, false, true, true, }true, true, true, false, true, true, true, true, true, true,true, false, true, true, }
static jframe jframe;
static ui ui;
public static void main(string args) {
启动新线程,创建一个窗口。
runnable()
数据结构课程设计报告
东莞理工学院城市学院。题目 二叉排序树 专业 计算机科学与技术 本 年级 2010级计算机科学与技术专业 1 班。个人姓名 何振江。指导教师 张娟老师 时间 2010至2011第二学期第18周 地点 实验楼615机房 东莞理工学院城市学院计算机与信息科学系制。2011年 6月。实习报告的内容。一 问...
数据结构课程设计报告
设计一个校园导游程序,为来访的客人提供信息查询服务。1 设计学校的校园平面图。选取若干个有代表性的景点抽象成一个无向带权图 无向网 以图中顶点表示校内各景点,边上的权值表示两景点之间的距离。2 存放景点代号 名称 简介等信息供用户查询。3 为来访客人提供图中任意景点相关信息的查询。4 为来访客人提供...
数据结构课程设计报告
河北科技大学。课程设计报告。学生姓名学号。专业班级。课程名称数据结构。学年学期 2 012 2 013学年第 2 学期指导教师 黄春茹。2 0 13年 6 月。课程设计成绩评定表。一 数据结构课程设计目标。二 问题描述。三 需求分析。四 概要设计。五 详细设计。六 软件说明书 给出软件如何使用,使用...