2022年数据结构c语言课程设计报告 2.pdf
《2022年数据结构c语言课程设计报告 2.pdf》由会员分享,可在线阅读,更多相关《2022年数据结构c语言课程设计报告 2.pdf(15页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C语言与数据结构课程设计报告学号姓名课程设计题目迷 宫 求 解2011 年 12 月名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 15 页 - - - - - - - - - 目录1 需求分析1.1 功能与数据需求1.1.1 题目要求的功能1.1.2 扩展功能1.2 界面需求1.3 开发环境与运行需求2 概要设计2.1 主要数据结构2.2 程序总体结构2.3 各模块函数说明3 详细设计3.1 算法分析与设计3.2 主要程序段设计4 测试5 使用说明5.1 应用程序功能的
2、详细说明5.2 应用程序运行环境要求5.5 输入数据类型、格式和内容限制6 总结提高6.1 课程设计总结6.2 开发中遇到的问题和解决方法6.3 对自己完成课设完成情况的评价6.4 C语言与数据结构课程设计课程的意见与建议附录:程序源代码名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 15 页 - - - - - - - - - 1 需求分析1.1 功能与数据需求迷宫求解问题描述:以一个m n 的长方形表示迷宫, 0 和 1 分别表示迷宫中的通路和障碍。设计一个程序, 对
3、任意设定的迷宫, 求出一条从入口到出口的通路,或得出没有通路的结论。1.1.1 题目要求的功能基本要求:首先实现一个以链表作存储结构的栈类型,然后编写一个求解迷宫的非递归程序。求得的通路以三元组(i,j,d)的形式输出,其中: (i,j)指示迷宫中的一个坐标, d 表示走到下一坐标的方向。如:对于下列数据的迷宫,输出的一条通路为:(1,1,1), (1,2,2), (2,2,2)(3,2,3), (3,1,2),。测试数据: 迷宫的测试数据如下: 左上角(1,1)为入口, 右下角(9,8)为出口。1 2 3 4 5 6 7 8 1.1.2 扩展功能(1)编写递归形式的算法,求得迷宫中所有可能的
4、通路;(2)以方阵形式输出迷宫及其通路1.2 界面需求请求输入进入程序请求输入起始位置0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 1 0 1 0 1 1 1 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 1 0 1 1 1 1 0 0 1 1 1 0 0 0 1 0 1 1 1 0 0 0 0 0 0 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 15 页 - - - - - - - - - 请求输入
5、终点位置输出方阵迷宫输出路径输出方阵路径1.3 开发环境与运行需求Visual C+6.02 概要设计2.1 主要数据结构定义模块函数模块主函数名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 15 页 - - - - - - - - - 2.3 各模块函数说明typedef struct int pos_xlength;/进栈坐标int pos_ylength;输入起始位置, 终点位置判断首节点是否为通路判断路径能否走通对坐标标记是否到达迷宫出口处左边是否存在通路下边是否
6、存在通路右边是否存在通路上边是否存在通路存储路径,将路径入栈有解迷宫无解迷宫Y N Y N Y 输出迷宫选择路径名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 15 页 - - - - - - - - - int top; int base; Stack; /新建结构体void initStack(Stack *p)/ 初始化栈Push(Stack *p,int x,int y,int d) /入栈具体操作 Pop(Stack *p,int read2,int d) /出
7、栈并读出前一步的坐标 initMaze(int Maze109)/建立迷宫Ways(Stack *p,int Maze109,int rukou_x,int rukou_y,int chukou_x,int chukou_y,int d) /具体路径的求解 menu();/调用菜单函数 main();/实现迷宫求解的主函数3 详细设计迷宫的过程可以模拟为一个搜索的过程:每到一处,总让它按左、右、上、下4 个方向顺序试探下一个位置;如果某方向可以通过,并且不曾到达,则前进一步,在新位置上继续进行搜索;如果4 方向都走不通或曾经到达过,则退回一步,在原来的位置上继续试探下一位置。每前进或后退一步,
8、都要进行判断:若前进到了出口处,则说明找到了一条合适的通路;若退回到了入口处,则说明不存在合法的通路到达出口。用一个二维指针数组迷宫表示迷宫,数组中每个元素取值“0”(表示通路)或“1”(表示墙壁)。迷宫的入口点在位置(1,1)处,出口点在位置(m,n)处。设计一个模拟走迷宫的算法,为其寻找一条从入口点到出口点的通路。二维数组的第0 行、第 m+1行、第 0 列、第 m+1列元素全置成“1”, 表示迷宫的外墙;第1 行第 1列元素和第m行第 m列元素置成“ 0”, 表示迷宫的入口和出口;假设当前所在位置是(x,y )。沿某个方向前进一步,它可能到达的位置最多有4。4 测试名师资料总结 - -
9、-精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 15 页 - - - - - - - - - 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 15 页 - - - - - - - - - 5 使用说明5.1 应用程序功能的详细说明按提示输入数字 1 进入迷宫,输入迷宫入口,迷宫出口5.2 应用程序运行环境要求Microsoft Visual C+6.05.5 输入数据类型
10、、格式和内容限制输入的数据都是整型( int ),输入迷宫的数据间要用空格或回车隔开6 总结提高6.1 课程设计总结要能很好的掌握编程,仅仅通过简单的程序的编写是无法达成的,需要大量积累和深入研究才有可能。就从这个迷宫问题求解来说,在迷宫求路径就需要使用链表的栈 ,靠出栈和进栈来存取路径数据.在程序的编写中也不能一味的向已有的程序进行模仿,而要自己摸索 ,去寻找最好的解决方法,只有带着问题去反复进行实践 ,才能更熟练的掌握和运用,当然,对现有的程序也要多去接触,因为有些程序是我们无法在短时间内想出来的.最重要的一点是持之以恒,要经常性的复习原来接触的程序,这样才能保证我们有足够的经验去面对程序
11、问题 . 6.2 开发中遇到的问题和解决方法问题: 在开始时迷宫求解的路径无法显示寻找路径所走的方向等问题。解决方法:在栈中增加一个变量d 来表示方向, 在寻找路径的时候判断下一个坐标点和本坐标点的关系。在(x)行不变的情况下: (y+1)列加一则表示坐标往右走了一步记为1、(y-1 )列减一则表示坐标往左走了一步记为3;在(y)名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 15 页 - - - - - - - - - 不变的情况下:( x+1)行加一则表示坐标往下走了
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年数据结构c语言课程设计报告 2022 数据结构 语言 课程设计 报告
限制150内