数据结构论文

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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);

相关文档
最新文档