C语言数据结构迷宫实验报告,数据结构c语言课程设计报告之迷宫

41528d3028836879cd698677c3999917.gif数据结构c语言课程设计报告之迷宫

C语言与数据结构课程设计报告学 号 ** 姓 名 ** 课程设计题目 迷 宫 求 解 2012 年 5 月目 录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应用程序功能的详细说明5.2应用程序运行环境要求5.5输入数据类型、格式和内容限制6 总结提高6.1课程设计总结6.2开发中遇到的问题和解决方法6.3 对自己完成课设完成情况的评价6.4《C 语言与数据结构课程设计》课程的意见与建议附录:程序源代码1 需求分析 1.1 功能与数据需求 迷宫求解问题描述:以一个 m×n的长方形表示迷宫,0 和 1分别表示迷宫中的通路和障碍。设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。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 81.1.2 扩展功能(1)编写递归形式的算法,求得迷宫中所有可能的通路;(2)以方阵形式输出迷宫及其通路1.2 界面需求请求输入进入程序0 0 1 0 0 0 1 00 0 1 0 0 0 1 00 0 0 0 1 1 0 10 1 1 1 0 0 1 00 0 0 1 0 0 0 00 1 0 0 0 1 0 10 1 1 1 1 0 0 11 1 0 0 0 1 0 11 1 0 0 0 0 0 0请求输入起始位置请求输入终点位置输出方阵迷宫输出路径输出方阵路径1.3 开发环境与运行需求Visual C++6.02 概要设计 2.1主要数据结构定义模块 函数模块 主函数输入起始位置,终点位置 判断首节点是否为通路判断路径能否走通对坐标标记 是否到达迷宫出口处左边是否存在通路 下边是否存在通路 右边是否存在通路 上边是否存在通路存储路径,将路径入栈 有解迷宫 无解迷宫 YNYNY输出迷宫 选择路径 2.3各模块函数说明typedef struct{ int pos_x[length];//进栈坐标int pos_y[length];int top; int base; }Stack; //新建结构体void initStack(Stack *p) //初始化栈Push(Stack *p,int x,int y,int d) //入栈具体操作 Pop(Stack *p,int read[2],int d) //出栈并读出前一步的坐标 initMaze(int Maze[10][9])//建立迷宫Ways(Stack *p,int Maze[10][9],int rukou_x,int rukou_y,int chukou_x,int chukou_y,int d) //具体路径的求解 menu();//调用菜单函数 main();//实现迷宫求解的主函数3 详细设计迷宫的过程可以模拟为一个搜索的过程:每到一处,总让它按左、右、上、下 4个方向顺序试探下一个位置;如果某方向可以通过,并且不曾到达,则前进一步,在新位置上继续进行搜索;如果 4方向都走不通或曾经到达过,则退回一步,在原来的位置上继续试探下一位置。每前进或后退一步,都要进行判断:若前进到了出口处,则说明找到了一条合适的通路;若退回到了入口处,则说明不存在合法的通路到达出口。用一个二维指针数组迷宫表示迷宫,数组中每个元素取值“0”(表示通路)或“1”(表示墙壁)。迷宫的入口点在位置(1,1)处,出口点在位置(m,n)处。设计一个模拟走迷宫的算法,为其寻找一条从入口点到出口点的通路。二维数组的第 0行、第 m+1行、第 0列、第 m+1列元素全置成“1”, 表示迷宫的外墙;第 1行第1列元素和第 m行第 m列元素置成“0”, 表示迷宫的入口和出口;假设当前所在位置是(x,y)。沿某个方向前进一步,它可能到达的位置最多有 4。4 测试5 使用说明5.1应用程序功能的详细说明按提示输入数字 1进入迷宫,输入迷宫入口,迷宫出口5.2应用程序运行环境要求Microsoft Visual C++6.05.5输入数据类型、格式和内容限制输入的数据都是整型(int),输入迷宫的数据间要用空格或回车隔开6 总结提高6.1课程设计总结要能很好的掌握编程,仅仅通过简单的程序的编写是无法达成的,需要大量积累和深入研究才有可能。就从这个迷宫问题求解来说,在迷宫求路径就需要使用链表的栈,靠出栈和进栈来存取路径数据.在程序的编写中也不能一味的向已有的程序进行模仿,而要自己摸索,去寻找最好的解决方法,只有带着问题去反复进行实践,才能更熟练的掌握和运用,当然,对现有的程序也要多去接触,因为有些程序是我们无法在短时间内想出来的.最重要的一点是持之以恒,要经常性的复习原来接触的程序,这样才能保证我们有足够的经验去面对程序问题.6.2开发中遇到的问题和解决方法问题: 在开始时迷宫求解的 路径无法显示寻找路径所走的方向等问题。解决方法:在栈中增加一个变量 d来表示方向,在寻找路径的时候判断下一个坐标点和本坐标点的关系。在(x)行不变的情况下:(y+1)列加一则表示坐标往右走了一步记为 1、(y-1)列减一则表示坐标往左走了一步记为 3;在(y)不变的情况下:(x+1)行加一则表示坐标往下走了一步记为 2、(x-1)行减一则表示坐标往上走了一步记为 4;6.3 对自己完成课设完成情况的评价经过本次课程设计,我深刻地明白了理论与实践应用相结合的重要性,并努力克服自己在分析复杂问题的弱点。这次课程设计同时也考验我的综合运用所学知识的能力和操作能力。参考用书:《数据结构(C 语言)》,严蔚敏、吴伟民等,清华大学出版社,2010 年《数据结构与算法分析(c++语言描述)》第 2 版,黄达民编著,清华大学出版社 2006.116.4《C 语言与数据结构课程设计》课程的意见与建议希望老师能指导我们把所有的课程设计题目都做一遍,因为每一道题目所能体现的知识点是有限的,而且要想提高我们的编程能力还需要大量的练习。附录:程序源代码#inc

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/433925.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

unicode字符大全可复制_说说Excel不可见字符的那些事

今天小伙伴问了个问题看上去啥也没有,为什么黏贴到记事本上前面那么多空白呢?典型的不可见字符惹出来的麻烦,这个往往是公司软件导出数据造成的我们今天就来细说说不可见字符的那些事拿上面的例子说明大部分不可见字符,这一步就能…

删除后别人的微信号变成wxid_微信偷偷更新:终于能改微信号,每年改一次

跟微信打交道多年,机哥可以说是六号线最熟知微信套路的人。比如,微信最喜欢在临近周末的时候,来一波悄悄更新。。难不倒我!微信新动态,几乎每次都被机哥妙手抓住。掐指一算,今天周五。安卓版微信 7.0.15 更…

窗体自适应分辨率

窗口、控件以及字体大小均随分辨率而变化&#xff0c;让界面适应各种不同的分辨率。 var FWidth: Integer;begin inherited; if (Screen.width <> 1024) then begin FWidth : Self.width; Scaled : True; Font.Size : (Self.width DIV FWidth) * Font.Size; // 字体大小调…

android设置多个按钮,android代码中设置两个按钮之间位置

package com.example.helloworld01;//包名import java.util.ArrayList;import java.util.List;import android.os.Bundle;import android.app.Activity;import android.graphics.Color;import android.widget.ArrayAdapter;import android.widget.Button;import android.widget…

linux 下查看程序依赖的库

查看arm程序的依赖库 # arm-linux-readelf hello -d Dynamic section at offset 0xf10 contains 25 entries: Tag Type Name/Value 0x00000001 (NEEDED) Shared library: [libc.so.6] 0x0000000c (INIT) …

cad管线交叉怎么画_高效设计!多种方式进行管线连接、伸缩

节点连接就是需要把一些节点连接起来&#xff0c;需要通过拖拽把他连接起来&#xff0c;类似CAD的延伸。管立得中的节点连接是可以创建他们的连接关系的&#xff0c;会进行管道的联动。下面是使用管线连接功能进行连接节点&#xff0c;以及管道伸缩的的操作方式。一、管线连接1…

淡入淡出轮播图效果

第一版本有很多限制&#xff0c;特以此做记录以待日后优化。模仿支付宝首页轮播图https://www.alipay.com/ <script> $(function(){var i1;var time;$("#J-slide").hover(function(){timewindow.clearInterval(time);//清除自动播放},function(){timesetInterv…

linux打开Firefox报错,Linux下安装Firefox-3.6.12.tar.bz2及libxul.so报错解决方案

在Linux下安装firefox-3.6.12.tar.bz2&#xff0c;解压后运行./firefox时报错&#xff1a;./firefox-bin: error while loading shared libraries: ./libxul.so: cannot restore segment prot after reloc: Permission denied解决方法如下&#xff1a;以如下命令运行你解压目录…

Ubuntu 12.04 静态ip的设置方法

1. 配置静态ip地址 $sudo vi /etc/network/interfaces 原有内容只有如下两行&#xff1a; auto lo iface lo inet loopback 向末尾追加以下内容&#xff1a; auto eth0 iface eth0 inet static address 192.168.0.33 gateway 192.168.0.1 netmask 255.255.255.0 net…

pp助手苹果版_生日助手时间管理软件免费版下载-生日助手倒计时app苹果版下载ios...

生日助手app是一款全新的时间管理软件&#xff0c;帮助你更好的进行时间管理快乐生活&#xff0c;能够帮助你准确提醒你想要设定的重要日子&#xff0c;app的功能服务支持除了日历以外&#xff0c;还有计算器、天气预报、倒计时还有星座等&#xff0c;非常实用哟。app能够帮助用…

Handler post用法整理

来自:http://www.eoeandroid.com/forum.php?modviewthread&tid197324 感谢原作者. /** 在这个demo中&#xff0c;整个过程如下&#xff1a;程序一启动&#xff0c;就把MyRunnable加入到消息队列中&#xff0c;android的handler是异步机制&#xff0c;所以在handler.post(n…

zabbix华为交换机模板_【教程】思科交换机镜像端口配置实例

关注我&#xff0c;你的眼睛会怀孕镜像口就是把思科交换机上的其他口的数据流量全部转到一个口或者两个口上&#xff0c;通常被用作排查问题或者获取数据流量。下面简单介绍下怎么配置源目的镜像口吧。1、使用telnet或者ssh连接到交换机上&#xff0c;可以使用连接工具&#xf…

linux中死锁的概念,【Linux】死锁概念总结

什么是死锁如果一组进程(或者线程)中的所有进程(或者线程)都在等待该组中其他进程(或者线程)才能引发的事件&#xff0c;那么这组进程(或者线程)就是死锁的死锁出现的情况举例(1)线程自锁&#xff0c;自己将自己锁住当进程(线程)第一次访问一个资源时&#xff0c;对该资源进行加…

revo uninstaller pro 序列号_iPhone12/pro已下架,在天猫

苹果10月份发布的首款5G版iPhone手机iPhone12系列手机一共有四款不同的型号分别为iPhone12 mini&#xff0c;iPhone12&#xff0c;iPhone12 Pro以及iPhone12 Promax。其中iPhone12以及iPhone12 Pro已经正式开始发售了&#xff0c;作为首款5G版iPhone手机&#xff0c;iPhone12系…

大话数据结构文摘

第1章 数据结构绪论 程序设计数据结构算法 数据结构:是相互之间存在一种或多种特定关系的数据元素的集合 1.逻辑结构 &#xff1a;是指数据对象中数据元素之间的相互关系 a&#xff1a;集合结构 b&#xff1a;线性结构 c&#xff1a;树形结构 d&#xff1a;图形结构 2.物理结…

vue打包代码反编译_Android逆向反编译代码注入APK过程思路分析

一、名称解释逆向 - 是一种产品设计技术再现过程&#xff0c;从可运行的程序系统出发&#xff0c;运用解 密、反汇编、系统分析等多种计算机技术&#xff0c;对软件的结构、流程、算法、 代码等进行逆向拆解和分析&#xff0c;推导出软件产品的源代码、设计原理、结构、 算法、…

android 好玩的ui,让安卓更好玩 这些Launchers值得拥有

【手机中国新闻】如果你对Android的布局和界面越来越厌倦&#xff0c;那么是时候安装一个新的启动程序了。Launchers可以让你定制带有主题和图标包的智能手机&#xff0c;还可以在切换屏幕、启动应用程序等操作时&#xff0c;几乎完全控制手机的性能。以下是安卓智能手机或平板…

微星主板rgb_虽然这块主板价格有点小贵,但用过之后,感觉还是可以接受的

其实这块主板并不算贵&#xff0c;但它与其它型号&#xff0c;其它品牌的丐中丐主板相比&#xff0c;的确要贵好二、三百多元。对于有些用户而言&#xff0c;贵这几百元&#xff0c;完全就是一种赤裸裸的抢钱行为&#xff0c;所以早就在心里打上了“不值”的标签。能用丐中丐的…

php 遍历数组

foreach 语法是专门针对PHP数组 进行循环遍历的 语法结构&#xff01; foreach($array as $value){//循环数组$array 将每个值赋给$value变量echo $value; //显示 } 转载于:https://www.cnblogs.com/gzlbolg/archive/2013/02/04/2892282.html

三层架构学习的困难_“网工起航计划”3天集训营 带你了解大型企业网络架构设计!...

点击蓝字关注我们网工起航计划3天集训营 带你了解大型企业网络架构设计开营时间&#xff1a;8月26日晚8点DAY1&#xff1a;企业园区网二层架构冗余设计实战 时间:8月26日20:00-21:301、网络通信过程详细解析2、交换机工作原理详解3、企业园区网二层架构冗余设计涉及技术点&a…