数据结构论文
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《迷宫》
数据结构程序设计报告
专业:计算机科学与技术
班级:计算机科学与技术1班姓名:王帅郭雷潘吉翠李梅冀雯静指导教师:李丹
二○○八年六月二十七日
目录
1.设计的任务 (1)
2.对问题的分析理解 (1)
3.采用的算法(流程图) (2)
4.算法中涉及的知识点 (2)
5.设计用的计算机环境 (3)
6.结论 (3)
7.源代码 (3)
8.参考文献 (13)
1.设计的任务
随机生成迷宫,显示迷宫图。从键盘输入得到一个字符,如果是1则人工探索。否则系统自动从下标1,1的地方开始搜索。
2.对问题的分析理解
一,问题要求根据输入的不同字符,以不同的搜索方式进行搜索。所以定义PeopleFind()人工搜索和FindWay()自动搜索两个函数。人工查找的初始位置为(1,1)。D,A,W,X,Q,E,Z,C分别代表右,左,上,下,左上,右上,左下,右下八个方向键。自动搜索则按照右下,下,右,上,右上,左下,左,左上的先后顺序进行搜索。
二,首先根据屏幕上的提示选择搜索方式。然后初始化屏幕,随机生成迷宫并显示在屏幕上。按照指定的搜索方式进行查找,找到通路则在屏幕上显示Find a way!反之则显示Not find a way!最后关闭图形。
3.采用的算法(流程图)
4.算法中涉及的知识点4.1 函数调用
4.2 二维数组的搜索4.3 输入函数
4.4 输出函数
4.5 图形文件库
4.6 随机文件库
4.7 switch语句
4.8 while语句
4.9 if else语句
4.10 for语句
4.11 各种语句的嵌套调用
5.设计用的计算机环境
5.1 IBM兼容器一台
5.2 tubro c 3.0
6.结论
在这次设计中,首先,我发现了很多问题,由于自己基本的语句掌握的不是十分熟练,所以在一开始不知道怎样把松散的函数调用紧凑地联系起来,经过仔细的看书以及向同学请教,终于将基本框架搭好,在调整细节时就相对轻松一些了,所以经过这次课程设计,我总结出了自己在学习数据结构中的不足,并且为其他类似语言打下了良好的基础,十分感谢老师以及同学的帮助,在此过程中还锻炼了我们与别人沟通的能力,使我们受益匪浅。
7.源代码
#include
#include
#include
#include
#include
#define N 20
int oldmap[N][N];
int yes=0;
int way[100][2],wayn=0;
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]);
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("\n Please select hand(1) else auto\n"); scanf("%c",&ch);
Init();
MapRand(map);
PrMap(map);
if(ch=='1')
PeopleFind(map);
else
FindWay(map,1,1);
Result();
Close();
}
void Init(void)
{ int gd=DETECT,gm;
initgraph(&gd,&gm,"c:\\tc");
}
void DrawPeople(int *x,int *y,int n)
{ setfillstyle(SOLID_FILL,WHITE);
bar(100+(*y)*15-6,50+(*x)*15-6,100+(*y)*15+6,50+(*x)*15+6); switch(n)
{
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_FILL,YELLOW);
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(BLACK);
line(500,200,550,200);
outtextxy(570,197,"d");
line(500,200,450,200);
outtextxy(430,197,"a");
line(500,200,500,150);
outtextxy(497,130,"w");
line(500,200,500,250);
outtextxy(497,270,"x");
line(500,200,450,150);