数据结构课程设计 - 迷宫

更新时间:2024-01-29 00:31:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

数据结构课程设计论文

题目: 迷宫 学院: 信息工程学院 专业: 信息管理与信息系统 班级: 信息管理与信息系统本(1)班 姓名: ******* 学号: 指导教师: 设计时间:

课程设计任务书

一、设计任务

随机生成一个迷宫图,从迷宫中找寻出路,将迷宫的左上角作入口,右下角

作出口,寻找从入口点到出口点的一条通路,并将通路信息显示出来。

二、设计要求

1. 基本要求:

(1) 对系统进行功能模块分析、控制模块分析;

(2) 系统设计要完成题目所要求的功能;

(3) 编程简练、可用,尽可能的使系统的功能更加完善和全面;

(4) 说明书、流程图清晰、美观。

2. 创新要求

在基本要求达到后,可进行创新设计,如改善算法性能、友好的人机界面。

三、设计期限

设计进度及完成情况表

日期 12.12-12.14 12.15-12.18 12.19-12.21 12.23 内容 选取参考书,查阅相关文献资料,完成资料收集和系 统分析工作 创建相关数据结构,录入源程序 调试程序,并记录调试中的问题,初步完成课程设计论文 上交数据结构课程设计报告,并回答指导老师提出的相关问题

- 1 -

前言

随着科技的日益发展,在当今知识爆炸的年代,计算机毫无疑问成为了人们日常生活中不可或缺的工具,而在计算机及其应用的各个领域中,都会用到各种各样的数据结构,学会分析研究计算机加工对象的特征,选择合适的数据结构和存储表示,以及编制相应的实现算法,是学习计算机不可或缺的知识技能。

数据结构可以说是编程的灵魂,它不是一门语言所以没有关键字。它只是给程序开发人员一个开发思路而已,讲的主要是已经成熟的编程思想和算法,而且几乎适用于所有开发语言。就好像学习英语一样,学习编程语言让你会说英语,记住很多英语单词,熟悉英语的很多语法。而学习数据结构能让你你出很漂亮的英语文章。

当然,在数据结构中迷宫是一个非常经典的问题,许多做课程设计的学生都可能选择迷宫这一课题。解决迷宫有很多种方法,在我的设计中我采用的是递归法,本方法在数据结构中运用的还是比较多的,当然还有回溯法运用的也比较普遍。至于其他的方法一般就不常见了,因为在学生熟悉和能够运用的方法中,这两种方法是运用广泛的,在许多高校,老师提倡的和教导的最基本的也是这两种方法。迷宫在数据结构中是比较简单的,容易让学生入门和对计算机产生兴趣,更容易让学生树立起信心。数据结构是一种工具,在日常生活中运用的比较多,学好数据结构可以提高以后再计算机方面编程的能力和实践能力。

本论文包括五个章节,包括需求分析、总体设计、详细设计、编码与调试、总结。 在整个课程设计的实践中,我们小组成员团结协作,共同交流,一起努力解决遇到的问题,学习到编写和调试代码要细心、耐心,才能最终完成整个课程设计。同时,在实践中,得到了老师许多宝贵意见,其他同学也提出了许多有益的建议,谨此一并致以诚挚的谢意。 由于个人水平有限,论文中有些许不当之处,望老师批评指正。

- 2 -

目录

第1章 需求分析‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥4

1.1性能需求与功能需求‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥4

1.2课题设计的目的与意义‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥4

第2章 总体设计‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥6

2.1课题设计的总体思路‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥6

2.2整个程序的流程图‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥7

2.3 课题设计界面‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥8

第3章 详细设计‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥9

3.1 main()主函数‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥9

3.2 Init ()初始化函数 ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥9

3.3 MapRand( )迷宫生成函数 ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥9

3.4 PrMap( )迷宫显示函数 ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥9

3.5 FindWay( )系统自动探索‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥10

3.6 PeopleFind( )人工探索‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥10

3.7 Result( )结果处理函数‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥11

3.8 Close()图形关闭函数‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥11

第4章 编码与调试‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥12

第5章 总结‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥20

附录‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥21

参考文献

- 3 -

第1章 需求分析

1.1性能需求与功能需求

性能需求:随着社会经济和人们物质生活的不断提高,人们对精神生活的需求也越来

越高,在现今社会里,人们对诸如智商、情商等的重视无疑反映了对精神生活的态度。当然具体到我们每个人来说,想必大多数人小时候都玩过魔方、迷宫吧。作为这种智力游戏,人们是百玩不厌的。正是鉴于这种需求,本设计运用计算机语言及其算法,将人的意志赋予机器实现,使人们不必在陷于枯燥的重复劳动,从而将更多的精力投入到未知领域的探索上。

功能需求:本设计的关键在于将人的思想自动化,有所编软件的自动的搜索可行路径。

因此,软件必须拥有自动搜索并记录可行路径的功能,除此之外,软件还应设置人机交互接口,以便能够人为地建立迷宫图;当然对于迷宫问题还有很多需要考虑的地方,比如由用户自己探索可行路径,但由于本设计侧重于迷宫的求解算法设计,并非以游戏的形式为初衷,一定有不全之处,望读者见谅。

1.2课题设计的目的与意义

一般认为,一个数据结构是由数据元素依据某种逻辑联系组织起来的。对数据元素间逻辑关系的描述称为数据的逻辑结构;数据必须在计算机内存储,数据的存储结构是数据结构的实现形式,是其在计算机内的表示;此外讨论一个数据结构必须同时讨论在该类数据上执行的运算才有意义。

在许多类型的程序的设计中,数据结构的选择是一个基本的设计考虑因素。许多大型系统的构造经验表明,系统实现的困难程度和系统构造的质量都严重的依赖于是否选择了最优的数据结构。许多时候,确定了数据结构后,算法就容易得到了。有些

- 4 -

时候事情也会反过来,我们根据特定算法来选择数据结构与之适应。不论哪种情况,选择合适的数据结构都是非常重要的。而进行课程设计实践操作能够使我们更好地巩固课本知识,对课本知识有更深一步的了解,了解迷宫求解相关方面的知识,能小组合作完成较为简单的程序的设计并独立完成课程设计的论文,通过课程设计,达到增强巩固数据结构知识的目的,使知识更加全面化,系统化。

选择了数据结构,算法也随之确定,是数据而不是算法是系统构造的关键因素。这种看法导致了许多种软件设计方法和程序设计语言的出现,面向对象的程序设计语言就是其中之一。

数据结构课程设计是学习数据结构课程的一个重要的环节,能巩固和加深课堂教学中所学习到的内容,提高学生学习的实践和实际工作能力,为以后的学习奠定好的基础和学习态度及方法。通过课程设计,使学生加强团队合作的意识,并且能够综合运用课本知识来解决实际问题,加强分析问题、解决问题和动手的能力。

- 5 -

第2章 总体设计

2.1课题设计的总体思路

(1)

程序的设计,首先要考虑迷宫的表示,这是一个二维关系图,典型的存储方式是选择二维数组,数据元素的值只有两种状态,所以取值为0或1,其中0表示通路,1表示墙壁即此路不通,这里将二维数组取名为map,将最外面一圈设为墙壁,作为一个封闭图形,只留下入口点和出口点为通路。

(2)

图形的显示就可以根据数组元素的值来确定,如果是人工探索,则根据按键来确定探索物的位置坐标,利用循环语句即可实现;如果是人工探索,则根据按键来确定探索物的位置坐标,利用循环语句即可实现;如果是系统自动检索,并在8个方向检索,则问题相对复杂,采用递归的方法实现。

(3) 迷宫—作为线性结构的典型应用,大多数是用递归方法实现,用0代表通路,

1代表此路不通。本程序采用了一个美观逼真的迷宫图,而且是随机生成的,迷宫的大小为N*N,N预定义为常数,修改N的数值,可以改变迷宫的大小(只要不超过屏幕显示范围),用白色表示可走的路,蓝色表示此路不可以通过,并画出整个程序的流程图,让整个程序的设计思路一目了然。

(4) 若设定的迷宫存在通路,如果采用的是系统自动探索的运行方式,则会显示

出所走过的路径;如果采用的是人工探索方式,没有记录所走过的路径,只显示找的通路信息;

(5) 程序执行的命令为:生成迷宫、求解迷宫、输出迷宫的解。

- 6 -

2.2整个程序的流程图

开始预定义主函数MAIN()定义二维数组Map[n][n]清除clrscr输出字符串并初始化随机生成迷宫(Mandrand)判断字符串(if)手动搜索PeopleFind()输出结果Result()关闭图像close()结束

图2-1 整个程序的流程图

- 7 -

自动搜索FingWay()

2.3 课题设计界面

图2-2 人工探索通路图

系统运行首先出现提示字符串“please select hand(1)else auto”,询问是选择人工 探索还是系统自动探索,当用户出现字符1按回车键后出现一个迷宫图,红色矩形块(表示探索物)出现在左上角,这是可以按代表8个方向的字符选择通路,遇到墙壁不能通行,按回车键结束探索,如果这是探索物移动到右下角出口,则显示找到通路信息,否则显示没有找到通路信息,在提示信息后,如果输入的字符不是1 ,则系统自动查找通路,如果没有找到通路,则显示没有找到通路信息,如果找到通路,则用红色标记走过的路径

- 8 -

第3章 详细设计

3.1 main()主函数

首先,确定是进行人工探索还是系统自动探索,通过输入字符来选定,选定之后调用图形初始化函数,紧接着调用迷宫生成函数及迷宫显示函数,然后根据输入的字符调用人工探索函数或自动探索函数。探索完毕进行处理,最后关闭图形系统,程序结束。

if(ch=='1')

PeopleFind(map);//人工搜索 else

FindWay(map,1,1);//系统自动从下标1,1的地方开始搜索

3.2 Init()初始化函数

由于迷宫图是在图形方式显示的,所以要进行图形初始化工作。

3.3 MapRand()迷宫生成函数

用数组map表示一个迷宫,要随机生成迷宫,数组元素的值利用随机函数生成0或1的数。将最外面一圈设为墙壁即不可通过,作为一个封闭图形,只留下入口点和出口点为通路。

for(i=0;i

for(j=0;j

if(i==0||i==N-1||j==0||j==N-1)//最外面一圈为墙壁 map[1][j]=1; else

if(i==1&&j==1||i==N-2||&&j==N-2)//出发点与终点表示为可走的 map[i][j]=0; else

map[i][j]=random(2);//其他的随机生成0或1 } }

3.4 PrMap()迷宫显示函数

根据数组map的值输出迷宫图,利用函数setfillstyle()设置图形实体填充样式,

- 9 -

bar()函数输出矩形块,每个块的大小为12*12单位,块与块间距为3,如果数组元素值为0,则填充为白色,值为1显示填充为蓝色,一个数组元素对应一个矩形块。数组元素的下标为矩形块的中心坐标,利用两重循环语句可以完成迷宫图的显示。

3.5 FindWay()系统自动探索

从下标(1,1)开始探索,依次按照右下、下、右、上、右上、左下、、左、左上的顺序前进,若该方向上的值为0,则前进一步,然后作相应的标记,表示该探索物在某一方向探索过,而在另一个方向上探索,若8个方向均已探索过,则不能再前进,需要沿着原来的路径回溯一步,然后重复上述过程直到出口。

判断8个方向的顺序前三个是判断右下、下、右、这样的话可以以最短的路径找到迷宫出口。

因为要回溯,所以实现的方法可以有两种;一种是非递归型方法,设置一个堆栈,记录所有走过的路径,前进时入栈,回溯时可以出栈;另一种是递归方法,不必设堆栈,但递归的方法其实就是栈的应用,只不过栈由系统安排,对用户是不可见的。本程序采用了后者实现。

在递归过程中凡是已经走过的路,做标记为1,防止来回徘徊而最终无法找到出口。由于走过的路数组元素要改变为1,为了8个方向的递归和回溯,所以做了一个函数WayCopy()把旧迷宫数组拷贝到新迷宫数组。同时设计一个全局变量yes,如果到了出口,yes赋值为1 ,探索结束。为了显示所走过的路径,把具体的路线保存在二维数组way中。Way[n][0]代表所走路径的行下标,way[n][1]代表所走路径的列下标,其中的n代表走的步数,根据way数组将走过的路径用红色显示。

3.6 PeopleFind()人工探索

首先输出迷宫图以及人工控制操作图示。红色探索物出现在左上角,采用人工控制8个方向的移动,由于8个方向,用光标键只能控制4个方向,为了统一,采用了临近的8个字符q、w、e、a、d、z、x、c代表8个方向,按了字符后,对应方向不是墙壁,可以将红色探索无移动到相应位置,按回车键表示人工操作,如果此时map数组元素的坐标是目标出口,则yes赋值为1,表示探索成功,否则赋值为0。

由于探索物在不停地移动,要在新位置显示,并将走过的路恢复为白色通路,可以调用函数DrawPeople(&x,&y,n)完成,参数x和y代表所走过的行坐标和列坐标,n代表

- 10 -

所选的方向,根据n的值将x和y进行相应的变化。

void PeopleFind(int (*map)[N]) {

int x,y;

char c=0;//接收按键的变量 x=y=1;//人工查找的初始位置

setcolor(11);//设置当前画线颜色

line(500,200,550,200);//从当前点开始用增量(x,y)画一直线(int x1,int y1,int x2,int y2)

outtextxy(570,197,\绘制并填充一个扇形(int x,int y,char far*textstring)

3.7 Result()结果处理函数

因为采用了两种探索方式,但最终结果是找到和没找到两种情况,所以在程序中设计了全局变量yes,根据yes的值进行处理,如果yes为0调用函数NotFind(),显示没找到通路信息,否则调用函数Find()。如果是系统自动探索,Find()会显示出所走过的路径,如果是人工探索,没有记录所走过的路径,只显示找到通路信息。

if(yes)//如果找到 Find(); else//没找到路 NotFind();

3.8 Close()图形关闭函数

调用函数closegraph()关闭图形函数系统,程序结束。

- 11 -

第4章 编码与调试

#include//图形函数 #include//其它函数

#include//此行为文件包含,告诉系统必须包含文件stdio.h,此文件为输入和输出提供支持。

#include//字符屏幕操作函数 #include//接口函数

#define N 20 //迷宫的大小可以改变

int oldmap[N][N];//递归用的数组,用全局变量节约时间 int yes=0;//yes是判断是否找到路的标志,1找到,0没找到

int way[100][2],wayn=0;//way数组是显示路线用的,wayn是统计走了几个格子 void Init(void);//图形初始化 void Close(void);//图形关闭

void DrawPeople(int *x,int *y,int n);//画人工探索物图 void PeopleFind(int (*x)[N]);//人工探索

void WayCopy(int (*x)[N],int(*y)[N]);//为了8个方向的递归,把旧迷宫图拷贝给新数组

int FindWay(int (*x)[N],int i,int j);//自动搜索函数 void MapRand(int (*x)[N]);//随机生成迷宫函数 void PrMap(int (*x)[N]);//输出迷宫图函数 void Result(void);//输出结果处理 void Find(void);//成功处理 void NotFind(void);//失败处理

//主函数

void main(void) {

int map[N][N];//迷宫数组 char ch;

clrscr();//清除正文模式窗口

printf(\选择搜索方式 scanf(\ Init();//图形初始化 MapRand(map);//生成迷宫 PrMap(map);//显示迷宫图 if(ch=='1')

PeopleFind(map);//人工搜索 else

FindWay(map,1,1);//系统自动从下标1,1的地方开始搜索 Result();//输出结果 Close();

- 12 -

}

//图形初始化 void Init(void) {

int gd=DETECT,gm;

initgraph(&gd,&gm,\}

//画人工控制图

void DrawPeople(int *x,int *y,int n) {

//如果将以下两句注释掉,则显示人工走过的路径

setfillstyle(SOLID_FILL,WHITE);//设置白色实体填充样式(int patttern,int color)

bar(100+(*y)*15-6,50+(*x)*15-6,100+(*y)*15+6,50+(*x)*15+6);//画一个二维条形图(int left,int top,int rigth,int bottom) //恢复原通路

switch(n)//判断x和y的变化,8个方向的变化 {

case 1:(*x)--;break;//上

case 2:(*x)--;(*y)++;break;//右上 case 3:(*y)++;break;//右

case 4:(*x)++;(*y)++;break;//右下 case 5:(*x)++;break;//下

case 6:(*x)++;(*y)--;break;//左下 case 7:(*y)--;break;//左

case 8:(*x)--;(*y)--;break;//左上 }

setfillstyle(SOLID_FILE,RED);//新位置显示探索物

bar(100+(*y)*15-6,50+(*x)*15-6,100+(*y)*15+6,50+(*x)*15+6); }

//人工手动查找

void PeopleFind(int (*map)[N]) {

int x,y;

char c=0;//接收按键的变量 x=y=1;//人工查找的初始位置

setcolor(11);//设置当前画线颜色

line(500,200,550,200);//从当前点开始用增量(x,y)画一直线(int x1,int y1,int

- 13 -

x2,int y2)

outtextxy(570,197,\绘制并填充一个扇形(int x,int y,char far*textstring) line(500,200,450,200); outtextxy(430,197,\ line(500,200,500,150); outtextxy(497,130,\ line(500,200,500,250); outtextxy(497,270,\ line(500,200,450,150); outtextxy(445,130,\ line(500,200,550,150); outtextxy(550,130,\ line(500,200,450,250); outtextxy(445,270,\ line(500,200,550,250);

outtextxy(550,270,\以上是画8个方向的控制介绍 setcolor(YELLOW);//设置当前画线颜色(int color)

outtextxy(420,290,\按回车键结束 setfillstyle(SOLID_FILL,RED);//设置填充模式和颜色

bar(100+y*15-6,50+x*15-6,100+y*15+6,50+x*15+6);//入口位置显示 while(c!=13)//如果按下的不是回车键 {

c=getch();//接收字符后开始各个方向的探索 if(c=='w'&&map[x-1][y]!=1) DrawPeople(&x,&y,1);//上 else

if(c=='e'&&map[x-1][y+1]!=1) DrawPeople(&x,&y,2);//右上 else

if(c=='d'&&map[x][y+1]!=1) DrawPeople(&x,&y,3);//右 else

if(c=='c'&&map[x+1][y+1]!=1) DrawPeople(&x,&y,4);//右下 else

if(c=='x'&&map[x+1][y]!=1) DrawPeople(&x,&y,5);//下 else

if(c=='z'&&map[x+1][y-1]!=1) DrawPeople(&x,&y,6);//左下 else

if(c=='a'&&map[x][y-1]!=1) DrawPeople(&x,&y,7);//左 else

- 14 -

if(c=='q'&&map[x-][y-1]!=1) DrawPeople(&x,&y,8);//左上 }

setfillstyle(SOLID_FILL,WHITE);//消去红色探索物,恢复原迷宫图 bar(100+y*15-6,50+x*15-6,100+y*15+6,50+x*15+6); if(x==N-2&&y==N-2)//人工控制找成功的话 yes=1;//如果成功标志为1 }

//拷贝迷宫数组

void WayCopy(int(*oldmap)[N],int(*map)[N]) {

int i,j;

for(i=0;i

oldmap([i][j]=map[i][j]; }

//递归找路

int FindWay(int (*map)[N],int i,int j) {

if(i==N-2&&j==N-2)//走到路口 {

yes=1;//标志为1,表示成功 return; }

map[i][j]=1;//走过的地方变为1 WayCopy(oldmap,map);//拷贝迷宫图

if(oldmap[i+1][j+1]==0&&!yes)//判断右下方是否可走 {

FindWay(oldmap,i+1,j+1);

if(yes)//如果到达出口了,再把值赋给显示路线的way数组,也正是这个原因,所以具体路线是从最后开始保存 {

way[wayn][0]=i; way[wayn++][1]=j return; } }

WayCopy(oldmap,map);

if(oldmap[i+1][j]==0&&!yes)//判断下方是否可以走,如果标志yes已经是1,则不用找下去了

- 15 -

{

FindWay(oldmap,i+1,j); if(yes) {

way[wayn][0]=i; way[wayn++][1]=j; return; } }

WayCopy(oldmap,map);

if(oldmap[i][j+1]==0&&!yes)//判断右方是否可以走 {

FindWay(oldmap,i,j+1); if(yes) {

way[wayn][0]=i; way[wayn++][1]=j; return; } }

WayCopy(oldmap,map);

if(oldmap[i-1][j]==0&&!yes)//判断上方是否可以走 {

FindWay(oldmap,i-1,j); if(yes) {

way[wayn][0]=i; way[wayn++][1]=j; return; } }

WayCopy(oldmap,map);

if(oldmap[i-1][j+1]==0&&!yes)//判断右上方是否可以走 {

FindWay(oldmap,i-1,j+1); if(yes) {

way[wayn][0]=i; way[wayn++][1]=j; return; } }

WayCopy(oldmap,map);

if(oldmap[i+1][j-1]==0&&!yes)//判断左下方是否可走

- 16 -

{

FindWay(oldmap,i+1,j-1); if(yes) {

way[wayn][0]=i; way[wayn++][1]=j; return; } }

WayCopy(oldmap,map);

if(oldmap[i][j-1]==0&&!yes)//判断左方是否可走 {

FindWay(oldmap,i,j-1); if(yes) {

way[wayn][0]=i; way[wayn++][1]=j; return; } }

WayCopy(oldmap,map);

if(oldmap[i-1][j-1]==0&&!yes)//判断左上方是否可走 {

FindWay(oldmap,i-1,j-1); if(yes) {

way[wayn][0]=i; way[wayn++][1]=j; return; } }

return; }

//开始的随机迷宫图

void MapRand(int (*map)[N]) {

int i,j;

cleardevice();//清除图形屏幕 randomize();//随机数发生器 for(i=0;i

for(j=0;j

- 17 -

{

if(i==0||i==N-1||j==0||j==N-1)//最外面一圈为墙壁 map[1][j]=1; else

if(i==1&&j==1||i==N-2||&&j==N-2)//出发点与终点表示为可走的 map[i][j]=0; else

map[i][j]=random(2);//其他的随机生成0或1 } } }

//输出迷宫图

void PrMap(int (*map)[N]) {

int i,j;

for(i=0;i

setfillstyle(SOLID_FILL,WHITE);//白色为可走的路 bar(100+j*15-6,50+i*15-6,100+j*15+6,50+i*15+6); } else {

setfillstyle(SOLID_FILL,BLUE);//蓝色为墙壁

bar(100+j*15-6,50+i*15-6,100+j*15+6,50+i*15+6); } }

//找到通路

void Find(void) {

int i;

setfillstyle(SOLID_FILL,RED);//红色输出走的具体路线 wayn--;

for(i=wayn;i>=0;i--) {

bar(100+way[i][1]*15-6,50+way[i][0]*15-6,100+way[i][1]*15+6,50+way[i][0]*15+6);

sleep(1);//控制时间显示

- 18 -

}

bar(100+(N-2)*15-6,50+(N-2)*15-6,100+(N-2)*15+6,50+(N-2)*15+6);//在目标点标红色

setcolor(GREEN);

settextstyle(0,0,2);//设置字体大小 outtextxy(130,400,\}

//没找到通路

void NotFind(void) {

setcolor(GREEN);

settextstyle(0,0,2);//设置字体大小 outtextxy(130,400,\}

//结果处理

void Result(void) {

if(yes)//如果找到 Find(); else//没找到路 NotFind(); getch(); }

//图形关闭

void Close(void) {

closegraph(); }

- 19 -

第5章 总结

通过上机实践学习,使我对c语言和数据结构有了更近一步的认识和了解,要想学好计算机,重在实践,要通过不断的上机操作才能更好地学习它。通过实践,发现自己有很多不足的地方,首先,自己的c语言的功底不行,有很大的提升空间,对c语言的一些标准库函数不太了解,通过这段时间的学习,较之之前,有所提高;再者,自己在指法上还不行,通过学习也有所改进,以后会继续努力。

随着信息量越来越大的现在,如何有效地存储数据也是件很有意义的事情,数据结构就能在这方面发挥很大的作用。通过这次数据结构课程设计更加增进了我和小组之间的感情,增强了团队合作意识,也让彼此了解到了在此方面的不足,让我们在以后的生活学习中相互督促和交流经验。

数据结构是一门很重要的科学,在很多领域都发挥着举足轻重的作用,学好数据结构是身为一名学习计算机的学生必须要做的事,在以后的学习中我会更加的关注和了解其中的精妙。当然,数据结构是一门很复杂的学科,包涵着很多很深层次的东西,不仅仅是数据结构的相关算法,更是一种思想和思维方式,这不是一时半会就能学好的,我们只能通过不断的实践,不断的探索,不断地稳固所学的知识才能有更好的发展。

- 20 -

附录

参考文献

【1】唐策善 李龙 黄刘生 《数据结构-用C语言描述》 高等教育出版社 1995年4月第

1版

【2】李明 主编 李刚健 宣善立 副主编 《C语言程序设计教程》 上海交通大学出版

社 2008年1月第1版

【3】郭翠英 等编著 《C语言程序设计案例精编》 中国水利水电出版社 2004年3月第

1版 【4】刘瑞新 汪远征 《Visul Basic程序设计教程》 机械工业出版社 2002 【5】谭浩强 《Visul Basic程序设计案例教程》 清华大学出版社 2008 【6】管丽娜 白海波 《实用Visul Basic 6教程》 清华大学出版社 2001 【7】段兴 《Visul Basic数据库实用程序设计100例》 人民邮电出版社 2002 【8】许宝文等 李志《计算机科学丛书》 北京机械工厂出版社 2004 【9】徐波等《c和c++实务精选》 北京人民邮电出版社 2002 【10】苏小红等 《c语言大学实用教程》电子工业出版社 2004

- 21 -

本文来源:https://www.bwwdw.com/article/xwqw.html

Top