1、目 录 1 前言 . 1 2 需求分析 . 2 2.1 课程设计目的 . 2 2.2 课程设计任务 . 2 2.3 设计环境 . 2 2.4 开发语言 . 2 3 分析和设计 2 3.1 模块设计 . 2 3.2 系统流程图 . 3 3.3 主要模块的流程图 7 4 具体代码实现 . 11 5 课程设计总结 .22 5.1 程序运行结果 22 5.2 课程设计体会 23 参考文献 23 致 谢 23 1 1 前言 本课程设计是关于数据结构和栈道的基本操作,使用 c 语言编程,定义合适的数 据结构,对已经学习的 c 语言的指针,数据结构和栈道加以了解。对于程序设计课程 的运用和学习。 2 需求分
2、析 2.1 课程设计目的 学生在教师指导下运用所学课程的知识来研究、 解决一些具有一定综合性问题的 专业课题。通过课程设计(论文) ,提高学生综合运用所学知识来解决实际问题、使 用文献资料、及进行科学实验或技术设计的初步能力,为毕业设计(论文)打基础。 2.2 课程设计任务 给出迷宫的入口和出口及相关的通路,求出从入口到出口的路径。要求使用 C 语言编程,定义合适的数据结构。最后,需要说明设计思想,同时给出能够运行的源 程序,并给出对应的程序流程图 2.3 设计环境 (1)WINDOWS 2000/2003/XP/7/Vista系统 (2)Visual C+或TC集成开发环境 2.4 开发语言
3、 C语言 3 分析和设计 3.1 模块设计 定义SHU、MG结构体类型, 产生记忆效果,以及用线性链表来进行地图更改。 2 typedef struct shuju int data; int flag; /*判断这个位置是否被走过,使其产生记忆效果*/ SHU; typedef struct maze int c; int flag; int direct; int x; int y; struct maze *next; MG; 定义pop()函数,用来进行入栈操作。 定义 way() 函数,用来寻找迷宫地图正确的路径。 /*寻找路径函数*/ 3 3.2 3.2 系统流程图系统流程图 开始
4、 输出原始矩 阵迷宫地图 定义相关变量以 及结构体数组 给 5 行5 列的迷宫 赋值为 8 的矩阵 输入 25 个后迷 宫地图创建完成 输出提示用户 输入 0 或 1 刷屏输出用户创 建地图 提示用户输入入口 坐标并接收其值 提示用户输入出口 坐标并接收其值 调用 pop 函数进行 入栈操作 判断是否有入口位 置,如没有要求重新 输 入直至合法 调用 way 函数来进 行路径判断输出图 结束 图 3.1 系统流程图 4 3.3 主要模块的流程图 N Y 定义相关变量开辟 一个 MG 结构体内 存单元并赋其值 MG 头指针指向其 刚定义的结构体 判断是否 为首次定 义 MG MG 结构体的 ne
5、xt 指针指向头指针 MG 头指针 next 指 针指向 NULL MG 头指针指向其 刚定义的结构体 刷屏并输出迷宫地 图 其刚定义的结构体 作为返回值返回 图 3.2 POP 入栈流 程图 5 N Y Y N Y Y 1 2 3 4 头指针的左方向的 值自减 定义相关变量 并相应赋值 头指针不 为 NULL 头 指 针 标 记变量为 1 取出头指针的两个 坐标 x,y 判断x,y是否 与出口相等 判断头指针 的左方向是 否为 4 N Y Y 判断数组下 标是否超过 界限 6 判断下列的 值表示为通 且标量为 0 Y 调用 pop 函数入栈 判断头指针 的下方向是 否为 3 头指针的下方向的
6、 值自减 Y Y Y 调用 pop 函数入栈 N 2 3 4 判断下 行的 值表示 为通 且标量为 0 Y 判断数组下 标是否超过 界限 7 判断头指针 的左方向是 否为 2 头指针的左方向的 值自减 判断下 列的 值表示 为通 且标量为 0 调用 pop 函数入栈 Y Y Y N 判断头指针 的上方向是 否为 1 Y N 1 3 4 判断数组下 标是否超过 界限 8 头指针的左方向的 值自减 判断数组下 标是否超过 界限 判断下 列的 值表示 为通 且标量为 0 调用 pop 函数入栈 给标记赋 1,地图标 量赋 0,头指针指向 next 并清屏 输出判断路径的迷 宫地图 返回 f 的值 图 3.2 way 寻找路 径函数流程图 9 4 具体代码实现 #include #include #include #include #include #include #include #include #define M 5 /*规定迷宫的行数