数据结构的论文.docx

上传人:b****3 文档编号:26469138 上传时间:2023-06-19 格式:DOCX 页数:15 大小:40.97KB
下载 相关 举报
数据结构的论文.docx_第1页
第1页 / 共15页
数据结构的论文.docx_第2页
第2页 / 共15页
数据结构的论文.docx_第3页
第3页 / 共15页
数据结构的论文.docx_第4页
第4页 / 共15页
数据结构的论文.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

数据结构的论文.docx

《数据结构的论文.docx》由会员分享,可在线阅读,更多相关《数据结构的论文.docx(15页珍藏版)》请在冰豆网上搜索。

数据结构的论文.docx

数据结构的论文

 

《迷宫》

数据结构程序设计报告

 

专业:

计算机科学与技术

班级:

计算机科学与技术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分别代表右,左,上,下,左上,右上,左下,右下八个方向键。

自动搜索则按照右下,下,右,上,右上,左下,左,左上的先后顺序进行搜索。

二,首先根据屏幕上的提示选择搜索方式。

然后初始化屏幕,随机生成迷宫并显示在屏幕上。

按照指定的搜索方式进行查找,找到通路则在屏幕上显示Findaway!

反之则显示Notfindaway!

最后关闭图形。

3.采用的算法(流程图)

 

4.算法中涉及的知识点

4.1函数调用

4.2二维数组的搜索

4.3输入函数

4.4输出函数

4.5图形文件库

4.6随机文件库

4.7switch语句

4.8while语句

4.9ifelse语句

4.10for语句

4.11各种语句的嵌套调用

5.设计用的计算机环境

5.1IBM兼容器一台

5.2tubroc3.0

6.结论

在这次设计中,首先,我发现了很多问题,由于自己基本的语句掌握的不是十分熟练,所以在一开始不知道怎样把松散的函数调用紧凑地联系起来,经过仔细的看书以及向同学请教,终于将基本框架搭好,在调整细节时就相对轻松一些了,所以经过这次课程设计,我总结出了自己在学习数据结构中的不足,并且为其他类似语言打下了良好的基础,十分感谢老师以及同学的帮助,在此过程中还锻炼了我们与别人沟通的能力,使我们受益匪浅。

7.源代码

#include

#include

#include

#include

#include

#defineN20

intoldmap[N][N];

intyes=0;

intway[100][2],wayn=0;

voidInit(void);

voidClose(void);

voidDrawPeople(int*x,int*y,intn);

voidPeopleFind(int(*x)[N]);

voidWayCopy(int(*x)[N],int(*y)[N]);

intFindWay(int(*x)[N],inti,intj);

voidMapRand(int(*x)[N]);

voidPrMap(int(*x)[N]);

voidResult(void);

voidFind(void);

voidNotFind(void);

voidmain(void)

{intmap[N][N];

charch;

clrscr();

printf("\nPleaseselecthand

(1)elseauto\n");

scanf("%c",&ch);

Init();

MapRand(map);

PrMap(map);

if(ch=='1')

PeopleFind(map);

else

FindWay(map,1,1);

Result();

Close();

}

voidInit(void)

{intgd=DETECT,gm;

initgraph(&gd,&gm,"c:

\\tc");

}

voidDrawPeople(int*x,int*y,intn)

{setfillstyle(SOLID_FILL,WHITE);

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

switch(n)

{

case1:

(*x)--;break;

case2:

(*x)--;(*y)++;break;

case3:

(*y)++;break;

case4:

(*x)++;(*y)++;break;

case5:

(*x)++;break;

case6:

(*x)++;(*y)--;break;

case7:

(*y)--;break;

case8:

(*x)--;(*y)--;break;

}

setfillstyle(SOLID_FILL,YELLOW);

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

}

voidPeopleFind(int(*map)[N])

{intx,y;

charc=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);

outtextxy(445,130,"q");

line(500,200,550,150);

outtextxy(550,130,"e");

line(500,200,450,250);

outtextxy(445,270,"z");

line(500,200,550,250);

outtextxy(550,270,"c");

setcolor(YELLOW);

outtextxy(420,290,"Press'Enter'toend");

setfillstyle(SOLID_FILL,YELLOW);

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);

elseif(c=='q'&&map[x-1][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;

}

voidWayCopy(int(*oldmap)[N],int(*map)[N])

{inti,j;

for(i=0;i

for(j=0;j

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

}

intFindWay(int(*map)[N],inti,intj)

{

if(i==N-2&&j==N-2)

{

yes=1;

return;

}

map[i][j]=1;

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]==0&&!

yes)

{

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)

{

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;

}

voidMapRand(int(*map)[N])

{

inti,j;

cleardevice();

randomize();

for(i=0;i

{

for(j=0;j

{

if(i==0||i==N-1||j==0||j==N-1)

map[i][j]=1;

else

if(i==1&&j==1||i==N-2&&j==N-2)

map[i][j]=0;

else

map[i][j]=random

(2);

}

}

}

voidPrMap(int(*map)[N])

{

inti,j;

setfillstyle(SOLID_FILL,10);

bar(0,0,1000,1000);

for(i=0;i

for(j=0;j

if(map[i][j]==0)

{

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,11);

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

}

}

voidFind(void)

{inti;

setfillstyle(SOLID_FILL,YELLOW);

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);

}

bar(100+(N-2)*15-6,50+(N-2)*15-6,100+

(N-2)*15+6,50+(N-2)*15+6);

setcolor(BLACK);

settextstyle(0,0,4);

outtextxy(130,400,"Findaway!

");

}

voidNotFind(void)

{

setcolor(BLACK);

settextstyle(0,0,4);

outtextxy(130,400,"Notfindaway!

");

}

voidResult(void)

{

if(yes)

Find();

else

NotFind();

getch();

}

voidClose(void)

{

closegraph();

}

参考文献:

【1】、秦玉平,马靖善.《数据结构(C语言版)》.北京:

清华大学出版社,2005年

【2】、谭浩强.《C程序设计(第三版)》.北京:

清华大学出版社,2005年

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1