数据结构的论文.docx
- 文档编号:26469138
- 上传时间:2023-06-19
- 格式:DOCX
- 页数:15
- 大小:40.97KB
数据结构的论文.docx
《数据结构的论文.docx》由会员分享,可在线阅读,更多相关《数据结构的论文.docx(15页珍藏版)》请在冰豆网上搜索。
数据结构的论文
《迷宫》
数据结构程序设计报告
专业:
计算机科学与技术
班级:
计算机科学与技术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年
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 论文
![提示](https://static.bdocx.com/images/bang_tan.gif)