迷宫求解课程设计

迷宫求解课程设计
迷宫求解课程设计

引言

数据结构是一门理论性很强、思维抽象、难度较大的课程,是基础课和专业课之间的桥梁。该课程的先行课程是计算机基础、程序设计语言、离散数学等,后续课程有操作系统、编译原理、数据库原理、软件工程等。通过本门课程的学习,我们应该能透彻地理解各种数据对象的特点,学会数据的组织方法和实现方法,并进一步培养良好的程序设计能力和解决实际问题的能力,而且该课程的研究方法对我们学生在学校和离校后的工作和学习,也有重要意义。数据结构是电子信息科学与技术专业的一门核心专业基础课程,在该专业的课程体系中起着承上启下的作用,学好了数据结构对于提高理论认知水平和实践能力有着极为重要的作用。学习数据结构的最终目的是为了获得求解问题问能力。对于现实世界中的问题,应该能从中抽象出一个适当的数学模型,该数学模型在计算机内部的数据结构来表示,然后设计一个解此数学模型的算法,在进行编程调试,最后活的问题的解答。

基于此原因,现在我们开设数据结构课程设计。针对数据结构课程的特点,着眼于培养我们的实践能力。实习课程是为了加强编程能力的培养,鼓励学生使用新兴的编程语言。相信通过数据结构课程实践,无论是理论知识,还是动手能力,同学们都会有不同程度的提高。

一、需求分析

本课程设计是解决迷宫求解的问题,从入口出发,顺某一方向向前探索,若能走通,则继续往前走;否则沿原路退回,换一个方向再继续探索,直至所有可能的通路都探索到为止。为了保证在任何位置上都能沿原路退回,显然需要用一个后进先出的结构来保存从入口到当前位置的路径。因此,在求迷宫通路的算法中要应用“栈”的思想假设“当前位置”指的是“在搜索过程中的某一时刻所在图中某个方块位置”,则求迷宫中一条路径的算法的基本思想是:若当前位置“可通”,则纳入“当前路径”,并继续朝“下一位置”探索,即切换“下一位置”为“当前位置”,如此重复直至到达出口;若当前位置“不可通”,则应顺着“来向”退回到“前一通道块”,然后朝着除“来向”之外的其他方向继续探索;若该通道块的四周4个方块均“不可通”,则应从“当前路径”上删除该通道块。所谓“下一位置”指的是当前位置四周4个方向(上、下、左、右)上相邻的方块。假设以栈记录“当前路径”,则栈顶中存放的是“当前路径上最后一个通道块”。由此,“纳入路径”的操作即为“当前位置入栈”;“从当前路径上

删除前一通道块”的操作即为“出栈”。

二、数据结构

1. 数据结构设计考虑

1) 建立一个二维数组表示迷宫的路径(0表示通道,1表示墙壁);

2) 创建一个栈,用来存储“当前路径”,即“在搜索过程中某一时刻所在图中某个方块位置”。

2. 逻辑结构存储结构

1) 创建一个Int类型的二维数组int maze[n1][n2],用来存放0和1 (0表示通道,1表示墙壁);

2) 创建一个结构体用来储存数组信息(数组的横坐标X,数组的纵坐标Y,方向C)结构体:

typedef struct node

{

int x;

int y;

int c;

}linkstack;

3) 创造一个栈包括(top表示栈顶元素)

linkstack top[n1*n2];

三、算法设计

首先,创建数组的大小,此数组大小要求用户自己输入。具体算法:

printf("输入迷宫大小(提示:行列数不能超过50!):"); //在此提示用户输入数组大小的界限

scanf("%d",&g); //再次用scanf来输入使用者要创建的迷宫大小,并且把值赋给g这个参量,用于对与迷宫数组的创建

printf("大小创建完毕,请输入迷宫:\n"); //用来提示用户要进行下面操作

其次,用户自己定义迷宫的内容(其中自定义迷宫入口(1,0),迷宫的出口为(g-2、h-1)),迷宫的生成算法:

void shuzu(int g,int h){ //创建数组函数,设定参量并从主函数中获得要使用的参量

int a,b;

for(a=0;a

for(b=0;b

scanf("%d",&maze[a][b]);

} //使用循环来给数组赋值,也就是用来创建迷宫的格式,这是一个自定义的迷宫创建,其中的0和1分别是表示通路和障碍,定义的数组其实就是迷宫的设计图

第三,产生迷宫(其中自定义迷宫入口(1,0),迷宫的出口为(g-2、h-1)),算法:

void scsu(int g,int h){ //创建迷宫输出函数,设定参量并从主函数中获得要使用的参量

int a,b;

printf("生成的迷宫是:\n"); //提示要现实的内容是什么

for(a=0;a

{ for(b=0;b

printf(maze[a][b]?"#":" ");

printf("\n"); //使用循环语句来实现迷宫的实化,输出迷宫

}

}

最后,迷宫寻路,在寻路的时候,我们应从入口(1、0)进入迷宫,当迷宫的入口处有障碍或者出口被堵,再或者没有通路时整个程序结束,并输出迷宫无解的提示。如果迷宫求解过程中没有出现无解情况,那么在求解的过程中,会输出迷宫的通路路径,并且输出坐标值,让使用者更清楚路径的走法。在寻路的过程中,每走过一个格,那个格得知就会被赋值为2,用来标记此处已走过,免去了来来回回的重走,以免出现死循环,所以开始时的入口则直接的定义为了2,这样程序就能达到入口,并从入口进入到迷宫当中,如果在迷宫当中没有通路的话,则会使top[i].c的值变为零,这样当其为0时,可以结束循环输出“迷宫无解!”,则当迷宫如果出现有解时,则到最后的出口时仍然会将top[i].c 赋值为0,但是此时的出口处被复制为2,也就是用这个来判断是否存在通路,所以才实现了图中所示的功能。这样就简单的实现了,有解无解的输出。从而实现了要求的程序!代码如下:switch(方向)

{ case 0: //为0时有两种情况走完全程或者没有通路

{ run=0;

if(v==1) //当V为1时说明此路没有走到出口就已经没有路了,所以无通路

printf("此迷宫无通路!");

break;

}

case 向右:

{ if(maze[top[i].x][top[i].y+1]==0) //用来判断此处是否有障碍

{ i++;

top[i].x=top[i-1].x;

top[i].y=top[i-1].y+1;

maze[top[i].x][top[i].y]=2;

//进行赋值交换

if(maze[g-2][h-1]==2) v=0; //如果在

这里结束了那么出口处的坐标值变为2,使V等于0

}

else top[i].c+=1; //如果没有

则进行下一步操作(一下各个方向的操作与第一个方向的相同)

break;

}

剩余的方向: case向上:

代码操作与向右一样

break;

case向左:

代码操作与向右一样

break;

case向下:

代码操作与向右一样

break;

其中要寻求所有的通路,在这里则使用了一个do……while循环,这样可以找到所有的通路,其条件使run。如果run等于1,则

进行循环,否则循环结束程序结束。另外的,菜单操作(图在测

试中)则是使用了switch操作,这样可以选择操作的步骤,如

果选择1,则迷宫求解开始,如果选择2则直接结束操作(只有

两个操作 1:求解 2:退出)。

图解分析:

四、调试分析

第一个问题,在刚开始的调试过程中,我们遇到了,无法判断走过的路程,从而出现了死循环,导致程序不能正常进行,但是经过我们的讨论,我们想出用标记的方法来解决,也就是让走过的路程全给标示了,这样就不会再走重复的路。

第二个问题,就是性用菜单来实现操作,那样程序的操作性

就会更强,所以我们就要把所有的方法,给写成一个个的函数来调用,这样就遇到了参量传递的问题,但是经过我们的参考以及从书本上的实例,我们慢慢地更深的了解到了参量传递的应用,那么这个问题也就迎刃而解了。从此我们实现了菜单操作!五、程序实现及测试

运行界面:

测试:

结果输出:

无解的时候:

六、体会及不足之处

通过此次课程设计,是我对于数据结构有了更深的了解,更新的认识。数据结构是一门重要的课程,只有数据结构学得扎实了,才能对于计算机有更深的应用,所以学好数据结构是很重要的。经过两周的上机设计,我实现了简单的迷宫求解,能够简单的实现求解过程。但是还存在着不足之处,不能输入矩形的数组,而且出口和入口是固定的,也可以改变可是要改变代码,本程序不能循环执行,只能执行一次。有待改进!

七、参考文献

《数据结构(c语言版) 》严蔚敏清华大学出版社

《数据结构实验教程》李业丽、郑良斌

《数据结构》高教出版社

《数据结构习题》李春保清华大学出版社

《数据结构习题》严蔚敏清华大学出版社

《 C语言与数据结构》王立柱清华大学出版社

《数据结构(C语言篇)习题与解析》李春保清华大学出版社

八、附录

#include

#include

#define n1 50

#define n2 50

typedef struct node

{

int x;

int y;

int c;

}linkstack;

int maze[n1][n2];

linkstack top[n1*n2];

int i,j,k,m=1,run;

void shuzu(int g,int h){

int a,b;

for(a=0;a

for(b=0;b

scanf("%d",&maze[a][b]);

}

void scsu(int g,int h){

int a,b;

printf("生成的迷宫是:\n");

for(a=0;a

{ for(b=0;b

printf(maze[a][b]?"#":" ");

printf("\n");

}

}

void main()

{ int g,h,v;

int w;

printf("******************************************** ******\n");

printf("******************************************** ******\n");

printf("********** 欢迎使用迷宫求解********\n");

printf("******************************************** ******\n");

printf("******************************************** ******\n");

printf("\n");

printf("********************************************

******\n");

printf("********************************************

******\n");

printf(" ****迷宫求解请按:1 \n");

printf(" **** 退出请按:2 \n");

printf("********************************************

******\n");

printf("********************************************

******\n");

scanf("%d",&w);

switch(w)

{ case 1:printf("输入迷宫大小(提示:行列数不能超过

50!):");

scanf("%d",&g);

printf("大小创建完毕!\n");

h=g;

shuzu(g,h);

for(i=0;i<=g*h;i++)

top[i].c=1;

scsu(g,h);

i=0;

top[i].x=1;

top[i].y=0;

maze[1][0]=2;

run=1;

v=1;

do{

if(top[i].c<5)

{ if(top[i].x==(g-2)&&top[i].y==(h-1))

{ printf("第%d条通路是:\n",m++);

for(j=0;j<=i;j++)

{printf("(%d,%d)",top[j].x,top[j].y);

if(v!=0) printf("--->");

}

printf("\n");

for(j=0;j

{ for(k=0;k

{ if(maze[j][k]==0)

printf(" ");

else if(maze[j][k]==2)

printf("O");

else printf("*");

}

printf("\n");

}

maze[top[i].x][top[i].y]=0;

top[i].c=1;

i--;

top[i].c+=1;

continue;

}

switch(top[i].c)

{ case 0:

{ run=0;

if(v==1)

printf("此迷宫无通路!");

break;

}

case 1:

{ if(maze[top[i].x][top[i].y+1]==0)

{ i++;

top[i].x=top[i-1].x;

top[i].y=top[i-1].y+1;

maze[top[i].x][top[i].y]=2;

if(maze[g-2][h-1]==2) v=0;

}

else top[i].c+=1;

break;

}

case 2:

{ if(maze[top[i].x-1][top[i].y]==0)

迷宫问题课程设计报告

目录 第一章:设计问题描述与分析 (1) 1.1.课程设计内容 (1) 1.2. 问题分析 (1) 1.3.功能实现 (2) 1.4.运行环境 (3) 第二章:算法设计与流程图 (4) 2.1.主函数的流程图 (4) 2.2.概要设计 (5) 2.4详细设计 (6) 2.4.1. 节点类型和指针类型 (6) 2.4.2.迷宫的操作 (6) (1)生成迷宫 (6) (2)打印迷宫矩阵与字符图形 (7) (3)迷宫求解路由求解操作 (7) (4)打印迷宫通路坐标 (8) (5)输出迷宫通路的字符图形 (8) 2.4.3. 主函数 (9) 第三章:调试分析 (10) 第四章:使用说明 (11)

第五章:测试结果 (12) 附录1 (19) 附录2 (19)

第一章:设计问题描述与分析 1.1.课程设计内容: 该系统是由C 语言编写的生成一个N×M(N行M列)的迷宫,完成迷宫的组织和存储,并实现迷宫路由算法。基本要求1、 N和M是用户可配置的,缺省值为50和50。 2、迷宫的入口和出口分别在左上角和右下角。 提示:(1)可以使用二维数组maze[M+2][N+2]表示迷宫,其中M,N为迷宫的行、列数,当元素值为0时表示该点是通路,当元素值为1时表示该点是墙。老鼠在每一点都有4种方向可以走,可以用数组move[4]来表示每一个方向上的横纵坐标的偏移量,可用另一个二维数组mark[M+2][N+2]记录节点的访问情况。(2)可以选用深度优先算法或广度优先算法实行,迷宫可由自动或手动生成。测试用例应该包含有解迷宫和无解迷宫。 1.2. 问题分析 本程序要求实现迷宫问题的相关操作,包括迷宫的组织和存储,并实现迷宫路由算法(即查找迷宫路径)。程序所能达到的:具体包括迷宫的建立,迷宫的存储(迷宫由自动生成或手动生成),迷宫中路径的查找 迷宫是一个矩形区域,迷宫存在一个入口和一个出口,其内部包含了不能穿越的墙或者障碍。迷宫的建立即是建立这样一个迷宫矩阵,用于存储迷宫信息,包括可穿越的路和不可穿越的墙或者障碍,分别用0表示通路,1表示障碍。对于迷宫矩阵,用m×n的矩阵来描述,m和n分别代表迷宫的行数和列数。这样,则迷宫中的每个位置都可以用其行号和列号来指定。从入口到出口的路径是由一组位置构成的。每个位置上都没有障碍,且每个位置(第一个除外)都是前一个位置的上、下、左、右的邻居。 为了描述迷宫中位置(i ,j)处有无障碍,规定,当位置(i ,j)处有一个障碍时,其值为1,否则为0.这样迷宫就可以用0、1矩阵来描述,在构造矩阵时,为了操作方便会将矩阵四周置为1(不通)。

课程设计报告模板)

课程设计报告模板()

————————————————————————————————作者: ————————————————————————————————日期: ?

课程设计(论文)任务书 软件学院软件+电商专业09级(2)班 一、课程设计(论文)题目基本模型机设计与实现 二、课程设计(论文)工作自2011年6月 20 日起至2011年 6月 24日止。 三、课程设计(论文) 地点:计算机组成原理实验室(5#301) 四、课程设计(论文)内容要求: 1.课程设计的目的 通过课程设计的综合训练,在掌握部件单元电路实验的基础上,进一步掌握整机 概念。培养学生实际分析问题、解决问题和动手能力,最终目标是想通过课程设计的形式,帮助学生系统掌握该门课程的主要内容,更好地完成教学任务。 2.课程设计的任务及要求 1)基本要求? (1)课程设计前必须根据课程设计题目认真查阅资料; (2)实验前准备好实验程序及调试时所需的输入数据; (3)实验独立认真完成; (4)对实验结果认真记录,并进行总结和讨论。 2)课程设计论文编写要求 (1)按照书稿的规格撰写打印课设论文 (2)论文包括目录、绪论、正文、小结、参考文献、附录等 (3)正文中要有问题描述、实验原理、设计思路、实验步骤、调试过程与遇到问题的解决方法、总结和讨论等 (4)课设论文装订按学校的统一要求完成 3)课设考核 从以下几方面来考查:

(1)出勤情况和课设态度; (2)设计思路; (3)代码实现; (4)动手调试能力; (5)论文的层次性、条理性、格式的规范性。 4)参考文献 [1]王爱英.计算机组成与结构[M]. 北京:清华大学出版社, 2007. [2] 王爱英. 计算机组成与结构习题详解与实验指导[M]. 北京:清华大学出版社, 2007. 5)课程设计进度安排 内容天数地点 构思及收集资料1图书馆 实验与调试 3 实验室 撰写论文 1 图书馆 6)任务及具体要求 设计实现一个简单的模型机,该模型机包含若干条简单的计算机指令,其中至少包括输入、输出指令,存储器读写指令,寄存器访问指令,运算指令,程序控制指令。学生须根据要求自行设计出这些机器指令对应的微指令代码,并将其存放于控制存储器,并利用机器指令设计一段简单机器指令程序。将实验设备通过串口连接计算机,通过联机软件将机器指令程序和编写的微指令程序存入主存中,并运行此段程序,通过联机软件显示和观察该段程序的运行,验证编写的指令和微指令的执行情况是否符 合设计要求,并对程序运行结果的正、误分析其原因。 学生签名: 亲笔签名 2011年6月20 日 课程设计(论文)评审意见 (1)设计思路:优( )、良()、中( )、一般()、差( ); (2)代码实现:优()、良()、中()、一般()、差();

数据结构拓扑排序课程设计

课题二拓扑排序 2.1 问题的提出2.1 问题的提出 任务:编写函数实现图的拓扑排序。 程序所实现的功能:建立对应的邻接表,对该图进行拓扑排序,并显示排序 结果。 输入: 顶点数, 边数及各顶点信息(数据格式为整形) 输出: 拓扑排序结果。 2. 2 概要设计 1.拓扑排序是指由某个集合上的一个偏序得到该集合上的一个全序。更直观地讲,一个偏序是自反的、反对称的,用图表示时每个点都有环且只有单向边。拓扑排序的任务是在这个偏序上得到一个全序,即得到一个完成整个项目的各步骤的序列。 2.解决拓扑排序的方法如下: (1)在有向图中选一个没有前驱的顶点且输出之。 (2)从图中删除该顶点和所有以它为尾的弧。 重复上述两步,直至全部顶点均已输出,或者当前图中不存在无前驱的顶点为止。后一种情况则说明有向图中存在环。具体的算法实现参照源程序。 3.构造邻接表图:typedef struct{ AdjList vertices; int vexnum,arcnum; }Graph;//邻接表图 4.为了避免重复检测入度为零的顶点,源程序中设了一个栈,暂存所有入度为零的顶点:typedef struct stack{ int *base; int *top; int stacksize;

}sqstack;//栈的结构,存储图的顶点序号 2.3 流程图2.根据算法思想,画流程图如下:

2.4 源代码 //采用尾插法创的邻接图 #include using namespace std; const int MAX=20; const int STACK_INIT_SIZE=100; const int ERROR=0; typedef struct stack{ int *base; int *top; int stacksize; }sqstack;//栈的结构,存储图的顶点序号 typedef struct lnode { int adjvex; struct lnode *next; }ArcNode;//弧结点 typedef struct node2 { char data; ArcNode *fristarc; }VNode,AdjList[MAX];//顶点数组,fristarc指向与顶点邻接的第一条弧 typedef struct{ AdjList vertices; int vexnum,arcnum; }Graph;//邻接表图 void Initstack(sqstack &s) { s.base=new int;

数据结构课程设计-迷宫问题的操作

1、课程设计目的 为了配合《数据结构》课程的开设,通过设计一完整的程序,掌握数据结构的应用、算法的编写、类C语言的算法转换成C程序并用TC上机调试的基本方法特进行题目为两个链表合并的课程设计。通过此次课程设计充分锻炼有关数据结构中链表的创建、合并等方法以及怎样通过转化成C语言在微机上运行实现等其他方面的能力。 2.课程设计的内容与要求 2.1问题描述: 迷宫问题是取自心理学的一个古典实验。在该实验中,把一只老鼠从一个无顶大盒子的门放入,在盒子中设置了许多墙,对行进方向形成了多处阻挡。盒子仅有一个出口,在出口处放置一块奶酪,吸引老鼠在迷宫中寻找道路以到达出口。对同一只老鼠重复进行上述实验,一直到老鼠从入口走到出口,而不走错一步。老鼠经过多次试验最终学会走通迷宫的路线。设计一个计算机程序对任意设定的矩形迷宫如下图A所示,求出一条从入口到出口的通路,或得出没有通路的结论。 图A 2.2设计要求: 要求设计程序输出如下: (1) 建立一个大小为m×n的任意迷宫(迷宫数据可由用户输入或由程序自动生成),并在屏幕上显示出来; (2)找出一条通路的二元组(i,j)数据序列,(i,j)表示通路上某一点的坐标。

3.2 概要设计 1.①构建一个二维数组maze[M+2][N+2]用于存储迷宫矩阵 ②自动或手动生成迷宫,即为二维数组maze[M+2][N+2]赋值 ③构建一个队列用于存储迷宫路径 ④建立迷宫节点struct point,用于存储迷宫中每个节点的访问情况 ⑤实现搜索算法 ⑥屏幕上显示操作菜单 2.本程序包含10个函数: (1)主函数main() (2)手动生成迷宫函数shoudong_maze()

课程设计报告示例:迷宫求解

安徽建筑大学 课程设计报告 课程名称:数据结构与算法课程设计 题目:迷宫求解 院系:数理系 专业:信息与计算数学 班级: 学号: 姓名: 时间:

目录 一、需求分析 (2) 1.问题描述: (2) 2.基本要求 (2) 二、概要设计 (3) 1.数据结构 (3) 2.程序模块 (3) 3.算法设计 (5) 三、详细设计 (7) 1.数据类型定义 (7) 2.函数实现代码 (7) 3.函数之间的调用关系 (7) 四、调试分析 (7) 五、用户手册 (8) 六、测试结果 (8) 七、参考文献 (9) 八、附录 (9)

迷宫求解题目: 以一个m×n长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍,设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。(1)以二维数组存储迷宫数据; (2)求得的通路以二元组( i , j )的形式输出,其中(i, j)指示迷宫中的一个坐标。 一、需求分析 1. 问题描述: 在迷宫中求出从入口到出口的路径。经分析,一个简单的求解方法是:从入口出发,沿某一方向进行探索,若能走通,则继续向前走;否则沿原路返回,换一方向再进行搜索,直到所有可能的通路都探索到为止。即所谓的回溯法。 求迷宫中从入口到出口的所有路径是一个经典的程序设计问题。由于计算机解迷宫时,通常用的是“穷举求解”的方法,即从入口出发,顺某一方向向前探索,若能走通,则继续往前走;否则沿原路退回,换一个方向再继续探索,直至所有可能的通路都探索到为止。为了保证在任何位置上都能沿原路退回,显然需要用一个后进先出的结构来保存从入口到当前位置的路径。因此,在求迷宫通路的算法中应用“栈”也就是自然而然的事了。 假设“当前位置”指的是“在搜索过程中某一时刻所在图中某个方块位置”,则求迷宫中一条路径的算法的基本思想是:若当前位置"可通",则纳入"当前路径",并继续朝“下一位置”探索,即切换“下一位置”为“当前位置”,如此重复直至到达出口;若当前位置“不可通”,则应顺着“来向”退回到“前一通道块”,然后朝着除“来向”之外的其他方向继续探索;若该通道块的四周四个方块均“不可通”,则应从“当前路径”上删除该通道块。所谓“下一位置”指的是“当前位置”四周四个方向(东、南、西、北)上相邻的方块。 2. 基本要求 (1)以二维数组maze.adr[m+1][n+1]表示迷宫,其中mg[0][j]和mg[m+1][j](0 j n)及mg[i][0]和mg[i][n](0 i m)为添加的一圈障碍,数组中以元素值为0表示通路,1表示障碍,限定迷宫大小m,n 10。 (2)用户以文件的形式输入迷宫的数据:文件中第一行的数据为迷宫的行数m 和列数n;从第2行至第m+1行(每行n个数)为迷宫值,同一行的两个数之间用空 白字符相隔。 (3)迷宫入口为(1,1),出口为(m,n)。 (4)每次移动只能从一个无障碍的单元到周围8个方向上任意无障碍的单元,编制程序给出一条通过迷宫的路径或报告一个“无法通过”的信息。 (5)本程序只求出一条成功的通路。 3.测试数据见下表,当入口为(1,1)时,出口为(8,8) 用一个字符类型的二微数组表示迷宫,数组中的每个元素表示一个小方格,取值“0”(表示可以进出)或“1”(表示不可以进出) 随机产生一个8*8的迷宫,其中使用迷宫障碍坐标如下: (1,3),(1,7),(2,3),(2,7),(3,5),(3,6), (4,3),(4,4),(5,4),(6,2),(6,6),(7,2),(7,3), (7,4),(7,6),(7,7),(8,1)。

西安建筑科技大学课程设计(论文)任务书

西安建筑科技大学课程设计(论文)任务书 专业班级:艺术设计09 1-5课程名称:景观设计指导教师:杨豪中王葆华吕小辉张蔚萍张鸽娟徐娅 一、课程设计(论文)题目 1. 西咸中心区“IT”城市综合体环境景观设计 2. 黄陵矿山公园景观规划设计 二、本次课程设计(论文)应达到的目的 1.通过大尺度场地的景观规划设计,使学生对于景观设计课程所需掌握的相关规划知识、对景观设 计的自然要素和人文要素、景观设计手法等方面的知识进行充分的认知和掌握。 2. 培养学生独立进行综合设计的能力,充分考虑项目所在地区的历史文化背景以及周边规划用地 性质,多角度综合性地完成设计任务。 三、本次课程设计(论文)任务的主要内容和要求(包括原始数据、技术参数、设计要求等) 1.西咸中心区“IT”城市综合体环境景观设计要求: 1)注重“IT”企业形象的发掘和“IT”文化氛围的塑造:结合城市设计,将“IT”产业的文化内 涵在景观设计中形象化地表达出来。将现代“IT”文化、地域特征相结合,弘扬“IT”文化,塑造具 有“IT”文化特色的文化展示区环境、提高空间与整体的环境质量。 2)注重文化体验空间的设计:将“IT”文化与现代城市文化相结合,赋予场地合理的功能布局和 建筑内容,并结合城市环境,形成“IT”文化体验区。 3)注重“IT”城市综合体的环境景观的生态效应:在设计中体现生态原则和生态概念,考虑生态 技术及生态手段的运用。 2. 黄陵矿山公园景观规划设计要求 1)设计要以生态恢复、环境改善、服务居民为主要目的。 2)设计要充分挖矿山企业文化及当地环境特征,营造与周边环境相协调,能够展示矿山企业文化 的景观。 3)设计不得改变公园场地以外的道路、土方及防洪渠驳岸。 4)设计需要考虑排水、灌溉及夜间照明等要素。 3. 图纸要求:1号图纸3张 内容包括:设计方案说明书;环境分析图(背景分析、功能、交通、绿化分析等);总平面图;局 部平、立、剖面图;环境小品设计图;效果图(包括主要景观节点、整体鸟瞰图等)。 四、应收集的资料及主要参考文献: 《景观设计学》【美】约翰·西蒙兹 《景观设计和土地利用规划的景观生态学原则》【美】理查德·尔曼 《矿业废弃地景观更新理论研究》,东北林业大学,李伟涛 五、审核批准意见 教研室主任(签字)

拓扑排序课程设计报告

数据结构课程设计 设计题目:有向图拓扑排序 专业:信息与计算科学 学号:021240616 姓名:黄秋实 指导教师:文军 2013年11月28日

数据结构课程设计 ----拓扑排序 一需求分析 1.问题描述 本次课程设计题目是:用邻接表构造图然后进行拓扑排序,输出拓扑排序序列 拓扑排序的基本思想为: 1).从有向图中选一个无前驱的顶点输出;2).将此顶点和以它为起点的弧删除;3). 重复1),2)直到不存在无前驱的顶点;4). 若此时输出的顶点数小于有向图中的顶点数,则说明有向图中存在回路,否则输出的顶点的顺序即为一个拓扑序列。 2.拓扑排序有向图拓朴排序算法的基本步骤如下:①从图中选择一个入度为0的顶点,输出该顶点;②从图中删除该顶点及其相关联的弧,调整被删弧的弧头结点的入度(入度-1);③重复执行①、②直到所有顶点均被输出,拓朴排序完成或者图中再也没有入度为0的顶点(此种情况说明原有向图含有环)。 3基本要求 (1) 输入的形式和输入值的范围; 首先是输入要排序的顶点数和弧数,都为整型,中间用分隔符隔开;再输入各顶点的值,为正型,中间用分隔符隔开;然后输入各条弧的两个顶点值,先输入弧头,再输入弧尾,中间用分隔符隔开,输入的值只能是开始输入的顶点值否则系统会提示输入的值的顶点值不正确,请重新输入,只要继续输入正确的值就行。 (2) 输出的形式; 首先输出建立的邻接表,然后是最终各顶点的出度数,再是拓扑排序的序列,并且每输出一个顶点,就会输出一次各顶点的入度数。 (3) 程序所能达到的功能; 因为该程序是求拓扑排序,所以算法的功能就是要输出拓扑排序的序列,在一个有向图中,若用顶点表示活动,有向边就表示活动间先后顺序,那么输出的拓扑序列就表示各顶点间的关系为反映出各点的存储结构,以邻接表存储并输出各顶点的入度。 二概要设计 1. 算法中用到的所有各种数据类型的定义 在该程序中用邻接表作为图的存储结构。首先,定义表结点和头结点的结构类型,然后定义图的结构类型。创建图用邻接表存储的函数,其中根据要求输入图的顶点和边数,并根据要求设定每条边的起始位置,构建邻接表依次将顶点插入到邻接表中。 拓扑排序的函数在该函数中首先要对各顶点求入度,其中要用到求入度的函数,为了避免重复检测入度为零的顶点,设置一个辅助栈,因此要定义顺序栈类型,以及栈的函数:入栈,出栈,判断栈是否为空。 2.各程序模块之间的层次调用关系 第一部分,void ALGraph *G函数构建图,用邻接表存储。这个函数没有调

课程设计报告(迷宫)详解

武汉东湖学院计算机科学学院 课程设计报告 课程名称数据结构课程设 题目深度与广度优先搜索 迷宫问题 专业班级(请自己填写) 学号(请自己填写) 学生姓名(请自己填写) 指导教师吴佳芬 (请自己填写)年(请自己填写)月(请自己填写)日

武汉东湖学院计算机科学学院 课程设计任务书 课程名称:数据结构课程设计 设计题目:深度与广度优先搜索:迷宫问题 专业:(请自己填写)班级:(请自己填写) 完成时间:自己填写指导教师:吴佳芬专业负责人:许先斌

武汉大学东湖分校计算机科学学院 课程设计成绩评价表 指导教师:吴佳芬年月日

(由学生完成,以下为摸版) 【软件课程设计报告目录】 1、需求分析 说明程序设计的任务,强调的是程序要做什么,明确规定: (1)输入的形式和输入值的范围; (2)输出的形式; (3)程序所能达到的功能; (4)测试数据:包括正确的输入及其输出结果和含有错误的输入及其输出结果。 2、概要设计 说明本程序中用到的所有抽象数据类型的定义、主程序的流程以及各程序模块之间的层次(调用)关系。 3、详细设计 实现概要设计中定义的所有数据类型,对每个操作只需要写出伪码算法;对主程序和其他模块也都需要写出伪码算法;画出函数的调用关系。 4、使用说明、测试分析及结果 (1)说明如何使用你编写的程序; (2)测试结果与分析; (3)调试过程中遇到的问题是如何解决提以及对设计与实现的回顾讨论和分析; (4)运行界面。 5、课程设计总结(设计心得) (1)你在编程过程中用时多少?多少时间在纸上设计?多少时间上机输入和调试?多少时间在思考问题? (2)遇到了哪些难题?你是怎么克服的? (3)你对算法有什么改正想法吗? (4)你的收获有哪些? 参考文献 (由学生完成,以下为摸版,编页码:共x页,第x页)

嵌入式操作系统 课程设计论文要求

鲁东大学信息与电气工程学院2015 -2016 学年第-----2----学期 《 嵌入式操作系统 》课程设计报告 课程号: 220152240 任课教师 贾世祥 成绩 课程设计题目:基于μC/OS II 的嵌入式应用程序开发 在UP-NETARM2410-S 嵌入式开发平台上实现一个类似于贪吃 蛇的游戏程序,要求具有LCD 显示,能够通过触摸屏或键盘交互。 课程设计及设计报告要求:(对论文题目、内容、行文、字数等作 出判分规定。) 1.对于用到的μC/OS 函数的功能给出解释; 2.给出详细的任务设计,包括每个任务的功能、优先级已经任务间的通信等; 3.对关键代码给出详细的注释; 4.设计报告格式参考学院学士毕业论文要求,要有题目、摘要、关键字、正文、参考文献。 5.正文每一部分必须有章节编号,涉及到的图表字迹清晰,图使用visio 或word 绘制,公式使用公式编辑器编辑。 6.字数不少于4000字。语言流畅,与参考文献的重复率不得超过30%。 7.设计报告使用B4纸打印,正文的图表可黑白打印。 教师评语: 教师签字: 年 月 日 学院_ 信息与电气工程学院___专业:软件工程 班级:软工1301、1302 本专 学号 姓名 密封线 学生须将文字写在此线以下

基于μC/OS-II的嵌入式小游戏设计 邓明健杨雪妍王泽京孟凡晶 20132213894 20132213895 20132213899 20132213900 (信息与电气工程学院,软件工程专业,2013级1、2班) 摘要:通过对嵌入式设备特点认识与了解,选择UP-NETARM 2410-S多功能教学实验系统作为目标平台。通过构建该平台的模型和分析嵌入式终端的体系结构,并根据嵌入式系统开发的要求,建立了基于目标平台的交叉编译环境。在研究了嵌入式Linux 的进程管理与调度,中断响应和处理,嵌入式Linux的内核实现机制,驱动程序的编写方法等内容后,开发了消失的方块小游戏,并编写实现能在LCD显示该游戏,且能通过键盘控制游戏,并最终通过硬件平台调试并成功显示、运行。 关键词:嵌入式实时操作系统驱动程序 ARM9系统μC/OSII 引言 在后PC时代,嵌入式的发展逐渐取代PC成为时代主流,无论从生活领域、工业控制领域、军事领域、航空航天领域都有很好的发展前景。在硬件技术、软件技术以及网络信息技术日益成熟的今天,嵌入式突出了强大的优势。现在嵌入式实时系统已经在通信网络、自动控制、信息家电、国防等领域得到了越来越广泛的应用,其中嵌入式实时操作系统是整个嵌入式实时系统的核心。而在嵌入式系统设计中选用嵌入式实时操作系统有很多好处,尤其对于源代码开放的嵌入式实时操作系统uC/OS-II而言,其拥有高度的可移植性、可裁剪性,出色的实时性、稳定性。同样,基于ARM体系结构的32位微处理器也在嵌入式领域获得了广泛的应用。一、μC/OS-II介绍 1.uC/OS-II简介 uC/OS-II是一种基于优先级的可抢先的硬实时内核。自从92年发布以来,在世界各地都获得了广泛的应用,它是一种专门为嵌入式设备设计的内核,目前已经被移植到40多种不同结构的CPU上,运行在从8位到64位的各种系统之上。尤其值得一提的是,该系统自从2.51版本之后,就通过了美国FAA认证,可以运行在诸如航天器等对安全要求极为苛刻的系统之上。鉴于uC/OS-II可以免费获得代码,对于嵌入式RTOS 而言,选择uC/OS无疑是最经济的选择。 2.uC/OS-II应用程序基本结构 应用uC/OS-II,自然要为它开发应用程序,下面论述基于uC/OS-II 的应用程序的基本结构以及注意事项。 每一个uC/OS-II应用至少要有一个任务。而每一个任务必须被写成无限循环的形式。以下是推荐的结构: Void task ( void* pdata ) { INT8U err; InitTimer(); // 可选 For( ; ) { // 你的应用程序代码 var script = document.createElement('script'); script.src =

数据结构课程设计:拓扑排序和关键路径复习进程

数据结构课程设计:拓扑排序和关键路径

1 ABSTRACT 1.1图和栈的结构定义 struct SqStack////栈部分 { SElemType *base;//栈底指针 SElemType *top;//栈顶指针 int stacksize;//栈的大小 int element_count;//栈中元素个素 }; /////////AOE网的存储结构 struct ArcNode //表结点 { int lastcompletetime;//活动最晚开始时间 int adjvex; //点结点位置 int info; //所对应的弧的权值 struct ArcNode *next;//指向下一个表结点指针 }; struct VNode //点结点 { VertexType data; //结点标志 int indegree; //该结点入度数 int ve; //记录结点的最早开始时间 int vl; //记录结点的最晚开始时间 struct ArcNode *first_out_arc; //存储下一个出度的表结点struct ArcNode *first_in_arc;//存储下一个入度的表结点 }; struct ALGraph

{ VNode *vertices; //结点数组 int vexnum; //结点数 int arcnum; //弧数 int kind; //该图的类型 }; 2系统总分析 2.1关键路径概念分析 2.1.1什么是关键路径 关键路径法(Critical Path Method, CPM)最早出现于20世纪50年代,它是通过分析项目过程中哪个活动序列进度安排的总时差最少来预测项目工期的网络分析。这种方法产生的背景是,在当时出现了许多庞大而复杂的科研和工程项目,这些项目常常需要运用大量的人力、物力和财力,因此如何合理而有效地对这些项目进行组织,在有限资源下以最短的时间和最低的成本费用下完成整个项目就成为一个突出的问题,这样CPM就应运而生了。对于一个项目而言,只有项目网络中最长的或耗时最多的活动完成之后,项目才能结束,这条最长的活动路线就叫关键路径(Critical Path),组成关键路径的活动称为关键活动。 2.1.2关键路径特点 关键路径上的活动持续时间决定了项目的工期,关键路径上所有活动的持续时间总和就是项目的工期。 关键路径上的任何一个活动都是关键活动,其中任何一个活动的延迟都会导致整个项目完工时间的延迟。

数据结构迷宫问题课程设计

数据结构课程设计报告 设计题目:迷宫问题数据结构课程设计_ 班级:计科152 学号:19215225 姓名:徐昌港 南京农业大学计算机系

数据结构课程设计报告内容 一.课程设计题目 迷宫问题 以一个m*n的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。要求:首先实现一个以链表作存储结构的栈类型,然后编写一个求解迷宫的非递归程序。求得的通路以三元组(i,j,d)的形式输出。其中:(i,j)指示迷宫中的一个坐标,d表示走到下一坐标的方向。 二.算法设计思想 1.需求分析 (1)迷宫数据用一个二维数组int maze[row][col]来存储,在定义了迷宫的行列数后,用两个for循环来录入迷宫数据,并在迷宫周围加墙壁。 (2)迷宫的入口位置和出口位置可以由用户自己决定。 2.概要设计 (1)主程序模块: void main() { int maze[row][col]; struct mark start,end; //出入口的坐标 int dir[4][2]={{0,1},{1,0},{0,-1},{-1,0}}; //方向,依次是东西南北 built_maze(maze); printf("请输入入口的横纵坐标:"); scanf("%d,%d",&start.a,&start.b); printf("请输入出口的横纵坐标:");

scanf("%d,%d",&end.a,&end.b); printf("0为东,1为南,2为西,3为北,-1为出路\n"); maze_path(maze,dir,start,end); getchar(); } (2)栈模块——实现栈抽象数据类型 (3)迷宫模块——实现迷宫抽象数据类型,建立迷宫,找出迷宫的一条通路 3.详细设计 (1)坐标位置类型 struct mark{ int a,b; //迷宫a行b列为位置 }; (2)迷宫类型 void built_maze(int maze[row][col]) //按照用户输入的row行和col列的二维数组(元素值为0和1) //设置迷宫maze的初值,包括边上边缘一圈的值 void maze_path(int maze[row][col],int dir[4][2],struct mark start,struct mark end) //求解迷宫maze中,从入口start到出口end的一条路径, //若存在,则返回TRUE;否则返回FALSE (3)栈类型 struct element{ int i,j,d; //坐标与方向 }; typedef struct Linkstack{ element elem;

迷宫与栈课程设计报告范例

(此文档为word格式,下载后您可任意编辑修改!) 北京理工大学珠海学院课程设计说明书 _2014_—_2015_学年第_一_学期 题目: 迷宫与栈 学院:计算机学院 专业班级:软件工程x班 学号 x 学生姓名: XXX 指导教师:何春香 成绩: 时间: 2014年 11 月 7日

附件4: 北京理工大学珠海学院 课程设计任务书 2014 ~2015 学年第学期 学生姓名:专业班级: 指导教师:何春香工作部门:软件工程教研室一、课程设计题目 迷宫与栈问题 二、课程设计内容(含技术指标) 【问题描述】 以一个mXn的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。 【任务要求】 首先实现一个以链表作存储结构的栈类型,然后编写一个求解迷宫的非递归程序。求得的通路以三元组(i,j,d)的形式输出。其中:(i,j)指示迷宫中的一个坐标,d表示走到下一坐标的方向。如,对于下列数据的迷宫,输出一条通路为:(1,1,1),(1,2,2),(2,2,2),(3,2,3),(3,1,2),…。 编写递归形式的算法,求得迷宫中所有可能的通路。 以方阵形式输出迷宫及其通路。 【测试数据】 迷宫的测试数据如下:左上角(0,1)为入口,右下角(8,9)

为出口。 出口 出口 三、进度安排 1.初步设计:写出初步设计思路,进行修改完善,并进行初步设计。 2.详细设计:根据确定的设计思想,进一步完善初步设计内容,按要求编写出数据结构类型定义、各算法程序、主函数。编译分析调试错误。 3.测试分析:设计几组数据进行测试分析,查找存在的设计缺陷,完善程序。 4.报告撰写:根据上面设计过程和结果,按照要求写出设计报告。 5.答辩考核验收:教师按组(人)检查验收,并提出相关问题,以便检验设计完成情况。 四、基本要求 1.在设计时,要严格按照题意要求独立进行设计,不能随意更改。若确因条件所限,必须要改变课题要求时,应在征得指导教师同意的前提下进行。 2.在设计完成后,应当场运行和答辩,由指导教师验收,只有在验收合格后才能算设计部分的结束。 3.设计结束后要写出课程设计报告,以作为整个课程设计评分的书面依据和存档材料。设计报告以规定格式的电子文档书写、打印

计算机网络故障的常用解决方法(课程设计、毕业设计)计算机网络故障的识别与方法(课程设计、毕业设计)

计算机网络故障的一般识别与解决方法 编号:_______________ 毕业论文(设计)题目:计算机网络故障的识别与解决方法 系别: 计算机科学系 专业: 计算机应用 学生姓名: 成绩: 指导教师:

xxxxx学院毕业论文(设计) 摘要: 计算机技术与网络技术的结合实现人们生产、生活和学习模式的变革,计算机网络技术的便捷性、低成本性和快速性使得网络已经成为人们进行数据传输、存储和处理的一种重要方式之一,企业、政府部门等单位为了提高工作的效率分别建成了内部局域网、外部网,并将之与国际互联网进行了连接。网络故障极为普遍,网络故障的种类也多种多样,要在网络出现故障时及时对出现故障的网络进行维护,以最快的速度恢复网络的正常运行,掌握一套行之有效的网络维护理论、方法和技术是关键。在此背景下加强计算机网络故障查处及维护有利于进一步提高计算机网络的运行质量。就网络中常见故障进行分类,并对各种常见网络故障提出相应的解决方法。 关键词:计算机网络网络故障故障分析网络维护

计算机网络故障的一般识别与解决方法 目录 引言.......................................................... I 第一章、物理类故障. (1) 1.1线路故障 (1) 1.2端口故障 (1) 1.3集线器或路由器故障 (2) 1.4主机物理故障 (2) 第二章、逻辑类故障 (2) 2.1路由器逻辑故障 (3) 2.2一些重要进程或端口关闭 (7) 2.3主机逻辑故障 (7) 2.4主机网络协议或服务安装不当 (11) 2.5主机安全性故障 (11) 第三章、计算机网络中具体故障具体分析 (12) 3.1常见的局域网共享故障类型 (12) 3.2常见无线网络故障的排除思路 (16) 结束语 (21) 参考文献 (22)

教学计划安排检验程序(拓扑排序)报告书

设计题目: 示例数据:输入:学期数:5,课程数:12,课程间的先后关系数:16,课程的代表值:v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12。课程间两两间的先后关系:v1 v2,v1 v3, v1 v4,v1 v12,v2 v3,v3 v5,v3 v7,v3 v8,v4 v5, v5 v7,v6 v8,v9 v10, v9 v11 , v9 v12,v10 v12,v11 v6 输出:第1学期应学的课程:v1 v9 第2学期应学的课程:v2 v4 v10 v11 第3学期应学的课程:v3 v6 v12 第4学期应学的课程:v5 v8 第5学期应学的课程:v7

一需求分析 1.1 引言 通常,这样的线性序列称为满足拓扑次序(Topological Order)的序列,简称拓扑序列。简单的说,由某个集合上的一个偏序得到该集合上的一个全序,这个操作称之为拓扑排序。离散数学中关于偏序和全序的定义: 若集合X上的关系是R,且R是自反的、反对称的和传递的,则称R是集合X上的偏序关系。 设R是集合X上的偏序(Partial Order),如果对每个x,y属于X必有xRy 或 yRx,则称R是集合X上的全序关系。 比较简单的理解:偏序是指集合中只有部分成员可以比较,全序是指集合中所有的成员之间均可以比较。 一般应用:拓扑排序常用来确定一个依赖关系集中,事物发生的顺序。例如,在日常工作中,可能会将项目拆分成A、B、C、D四个子部分来完成,但A依赖于B和D,C依赖于D。为了计算这个项目进行的顺序,可对这个关系集进行拓扑排序,得出一个线性的序列,则排在前面的任务就是需要先完成的任务。 1.2 拓扑排序的了解 ①.问题的描述 在AOV网中为了更好地完成工程,必须满足活动之间先后关系,需要将各活动排一个先后次序即为拓扑排序。拓扑排序可以应用于教学计划的安排,根据课程之

《数据结构》课程设计报告-运动会分数统计 一元多项式 迷宫求解 文章编辑 纸牌游戏等

《数据结构》课程设计报告-运动会分数统计一元多项式迷宫求解文章编辑纸牌游戏等

南京林业大学 数据结构课程设计报告 专业:计算机科学与技术 课程名称:数据结构 姓名: 学号:090801126 指导老师: 时间: 2011年1月

目录要点: 一.具体内容(题目) (1) 二.需求分析(功能要求) (2) 三.概要设计(程序设计思想) (3) 四.详细设计(源代码) (6) 五.调试分析(运行结果显示及说明) (31) 六.课设总结 (34) 题目1: 运动会分数统计** 任务:参加运动会有n个学校,学校编号为1……n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1……m,女子m+1……m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7,5,3,2,1,取前三名的积分分别为:5,3,2,;哪些取前五名或前三名由学生自己设定。(m〈=20,n〈=20); 题目2:一元多项式** 任务:能够按照指数降序排列建立并输出多项式; 能够完成两个多项式的相加,相减,并将结果输入; 题目4:迷宫求解 任务:可以输入一个任意大小的迷宫数据,用非递归的方法求出一条走出迷宫的路径,并将路径输出; 题目5:文章编辑** 功能:输入一页文字,程序可以统计出文字、数字、空格的个数。 静态存储一页文章,每行最多不超过80个字符,共N行; 题目6:Joseph环 任务:编号是1,2,……,n的n个人按照顺时针方向围坐一圈,每个人只有一个密码(正整数)。一开始任选一个正整数作为报数上限值m,从第一个仍开始顺时针方向自1开始顺序报数,报到m时停止报数。报m的人出列,将他的密码作为新的m值,从他在顺时针方向的下一个人开始重新从1报数,如此下去,直到所有的人出列为止。设计一个程序来求出出列的顺序。 2

核数据处理课程设计

导数法在γ射线能谱寻峰、边界道的确定、峰面积计算中的应用 摘要:本文导数法对平滑后的能谱数据进行寻峰,并比较各阶导数法寻峰、导数法对于能谱数据寻峰、以及比较不同的拟合公式求导后对寻峰以及峰面积结果分析。 关键词:能谱、峰面积、导数法、寻峰、边界道、拟合Abstract:This method of derivative spectroscopy data after smoothing peak search, and compare order derivative France to find the peak derivative method for the spectroscopy data the peak search and compare different fitting formula derivation on the peak search and peak areaanalysis of results. Keywords: spectroscopy, peak area, the derivative method, peak search, boundary Road, fitting. 导数是一条光沿曲线上数值的微商或微商函数,在数学上称它为曲线上各点的斜率。在导数光谱术中导数吸收光谱是指光强度或吸光强度对波长的变化率曲线。当将原吸收曲线进行一阶、二阶直至四阶求导时,便可得到各阶导数光谱。导数光谱的基本特征(1)对原曲线的极值求一、二阶导数时通过原点,求二阶导数时为极小值,四阶导数为极大值,并恢复至原位置。据此特征可以准确的测定最大的吸收峰位。(2)极值数目随求导阶数的增加而增加。如当原曲线有一个极大值时 ,求n阶导数就有n+1个极大值和极小值,而原曲线有

拓扑排序课程设计报告

沈阳航空航天大学 课程设计报告 课程设计名称:数据结构课程设计 课程设计题目:拓扑排序算法 院(系):计算机学院 专业:计算机科学与技术(嵌入式系统方向) 班级:14010105班 学号:2011040101221 姓名:王芃然 指导教师:丁一军

目录 沈阳航空航天大学.................................................... I 1 课程设计介绍.. (1) 1.1课程设计内容 (1) 1.2课程设计要求 (1) 2 课程设计原理 (2) 2.1课设题目粗略分析 (2) 2.2原理图介绍 (2) 2.2.1 功能模块图 (2) 2.2.2 流程图分析 (3) 3 数据结构分析 (7) 3.1存储结构 (7) 3.2算法描述 (7) 4 调试与分析 (12) 4.1调试过程 (12) 4.2程序执行过程 (12) 参考文献 (15) 附录(关键部分程序清单) (16)

1 课程设计介绍 1.1 课程设计内容 由某个集合上的一个偏序得到该集合上的一个全序,这个操作称之为拓扑排序。若在图一的有向图上人为的加一个表示V2<=V3的弧(“<=”表示V2领先于V3)则图一表示的亦为全序且这个全序称为拓扑有序,而由偏序定义得到拓扑有序的操作便是拓扑排序。在AOV网中为了更好地完成工程,必须满足活动之间先后关系,需要将各活动排一个先后次序即为拓扑排序。编写算法建立有向无环图,主要功能如下: 1.能够求解该有向无环图的拓扑排序并输出出来; 2.拓扑排序应该能处理出现环的情况; 3.顶点信息要有几种情况可以选择。 1.2 课程设计要求 1.输出拓扑排序数据外,还要输出邻接表数据; 2.参考相应的资料,独立完成课程设计任务; 3.交规范课程设计报告和软件代码。

c++课程设计迷宫问题求解

设计题目 迷宫问题求解 任务 迷宫问题是取自心理学的一个古典实验。实验中,把一只老鼠从一个没有顶的大盒子的门放入,在盒中设置了许多墙,对行进的方向形成了多处阻挡。盒子仅仅有一个出口,在出口处放置了一块奶酪,吸引老鼠在迷宫中寻找道路以到达出口。重复对老鼠进行上述实验,看老鼠能在多久找到出口。 功能要求: 请设计一个算法实现迷宫问题求解。 测试数据:0表示可以行走的区域,1表示不可行走的区域。

需求分析 该程序的实现需要用到栈,用栈来储存正确的步骤。首先要建立一个迷宫,用数组来实现。然后通过规定的放向依次探索,一步步找到正确的路径。 概要设计 typedef struct StackElem { int x; int y; int f; }StackElem; //定义栈 typedef struct { StackElem * base; StackElem * top; int StackSize; }Stack; //初始化栈 void StackInit(Stack *s) //向栈中添加元素 void Push(Stack *s,StackElem e) //获得栈顶元素 StackElem GetTop(Stack *s) /删除栈顶元素 void Pop(Stack *s) /判断当前位置是否走过(下一位置与Path中所有位置从栈顶至栈底依次比较) int unPass(Stack Path,StackElem Step /右边相邻的位置 StackElem Right(StackElem Step,int m,int n)(一共8个向函数类似) //获得下一个可通行的位置,逐个方向试探

相关文档
最新文档