数据结构课程设计
上学时没学过数据结构和算法,于是现在有机会就自学。下面是我最近在等待进入项目组期间,花了1小时学习了一下迷宫问题。
一.需求设计:以一个m*m 的方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。设计一个程序,对任意设定的迷宫,求出一条从入口的通道,或得出没有通路的结论。
二.概要设计:
存储结构:
采用了数组以及结构体来存储数据,在探索迷宫的过程中用到的栈,属于顺序存储结构。
/*八个方向的数组表示形式*/
int move[8][2]={{0,1},{1,1},{1,0},{1,-1},{0,-1},{-1,-1},{-1, 0},{-1, 1}};
/*用结构体表示位置*/
struct position
{int x,y;};
position stack[m*m+1];
基本算法:
走迷宫的过程可以模拟为一个搜索的过程:每到一处,总让它按东、东南、南、西南、西、西北、北、东北8个方向顺序试探下一个位置;如果某方向可以通过,并且不曾到达,则前进一步,在新位置上继续进行搜索;如果8个方向都走不通或曾经到达过,则退回一步,在原来的位置上继续试探下一位置。
每前进或后退一步,都要进行判断:若前进到了出口处,则说明找到了一条通路;若退回到了入口处,则说明不存在通路。
用一个字符类型的二维数组表示迷宫,数组中每个元素取值“0”(表示通路)或“1”(表示墙壁)。迷宫的入口点在位置(1,1)处,出口点在位置(m,m)处。设计一个模拟走迷宫的算法,为其寻找一条从入口点到出口点的通路。
二维数组的第0行、第m+1行、第0列、第m+1列元素全置成“1”,表示迷宫的边界;第1行第1列元素和第m行第m列元素置成“0”,表示迷宫的`入口和出口;其余元素值用随机函数产生。
假设当前所在位置是(x,y)。沿某个方向前进一步,它可能到达的位置最多有8个。
如果用二维数组move记录8个方向上行下标增量和列下标增量,则沿第i个方向前进一步,可能到达的新位置坐标可利用move数组确定:
x=x+move[i][0]
y=y+move[i][1]
从迷宫的入口位置开始,沿图示方向顺序依次进行搜索。在搜索过程中,每前进一步,在所到位置处做标记“”(表示这个位置在通路上),并将该位置的坐标压入栈中。每次后退的时候,先将当前所在位置处的通路标记“”改成死路标记“×”(表示这个位置曾到达过但走不通,以后不要重复进入),然后将该位置的坐标从栈顶弹出。搜索到出口位置时,数组中那些值为“”的元素形成一条通路。
-
关于《送孟浩然之广陵》的教学精品设计
教学目标:1、正确,流利有感情地朗读课文,背诵课文。2、感悟诗歌的内容,想象诗歌所描绘的情景,体会朋友之间的深厚情谊。3、激起对祖国诗歌的热爱之情,培养课外主动积累诗歌的良好习惯。4、培养学生搜集信息的能力、语言表达的能力、自主学习的能力、想象思维的能力。...
-
广告设计专业自荐信范本
尊敬的领导:您好!非常感谢您在百忙之中阅读我的自荐信!我叫黄xxx,是xxxx学院200x届毕业生,得知贵企业为积极谋求发展招贤纳才。我真诚的渴望能加入贵企业,为贵企业的发展壮大贡献我的才能和智慧。在大专三年中我认真努力,各门基础课程和专业课程均取得了较好成绩,在我...
-
研究BIM技术在展示空间设计中的应用论文
摘要:BIM作为一门新兴的信息化建筑技术,已经由当初的概念阶段转向实施和推广阶段,并依靠其独特的优势,引领未来建筑行业发展的新趋势。不可避免,BIM技术也逐渐渗透到展示空间设计领域,并在设计实践中发挥其可视化、可协调性的优势。论文对BIM技术在展示空间设计中的...
-
书香满校园悦读伴成长读书节节标设计
读书节是提高学生的作文水平和语文素养,丰富校园文化生活的重要读书平台,以下是设计读书节的节标,供大家参考!书香满校园悦读伴成长读书节征文稿:“读书,是孩子们净化灵魂的一个非常重要的途径。”为了激发学生读书热情,使学生养成多读书,读好书,会读书的习惯,大力推进书...