数据结构实验四.docx
- 文档编号:2984137
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:11
- 大小:43.23KB
数据结构实验四.docx
《数据结构实验四.docx》由会员分享,可在线阅读,更多相关《数据结构实验四.docx(11页珍藏版)》请在冰豆网上搜索。
数据结构实验四
(本实验项目方案受“教育部人才培养模式创新实验区(X3108005)”项目资助)
实验难度:
A□B□C□
学号
姓名
成绩
一、【实验构思(Conceive)】(10%)
(本部分应包括:
描述实验实现的基本思路,包括所用到的离散数学、工程数学、程序设计、算法等相关知识)
答:
使用二维数组初始化迷宫,随机产生1,代表墙,随机产生0,代表通路。
采用递归遍历,依次上右下左顺序进行遍历产生通路。
最后根据不同的值输出不同的符号来代表墙、通路、路径、及走过的死路。
二、【实验设计(Design)】(20%)
(本部分应包括:
抽象数据类型的功能规格说明、主程序模块、各子程序模块的伪码说明,主程序模块与各子程序模块间的调用关系)
答:
构建迷宫:
intinitmaze()/*初始化迷宫数组*/
{inti,j;
printf("请输入迷宫大小:
(X,Y)");
scanf("%d%d",&ROW,&COL);
for(i=0;i {maze[i][0]=1; maze[i][COL-1]=1; } for(i=0;i {maze[0][i]=1; maze[ROW-1][i]=1; } srand(time(NULL)); for(i=1;i for(j=1;j { maze[i][j]=rand()%2; } maze[1][1]=0; maze[ROW-2][COL-2]=0; return0; } 搜索路径: intway(intX,intY) { if(maze[ROW-2][COL-2]==2)/*递归结束条件*/ return1; else/*递归执行部分*/ if(maze[Y][X]==0) { maze[Y][X]=2; if(way(X,Y-1)) return1; elseif(way(X+1,Y)) return1; elseif(way(X,Y+1)) return1; elseif(way(X-1,Y)) return1; else { maze[Y][X]=3; return0; } } else return0; } 根据用户输入决定是否进行再次生成迷宫操作并输出迷宫及其在有同路时的落线: voidmain() { inti,j,m;/*循环计数变量*/ do{initmaze(); m=way(1,1); printf("%d\n",m); printf("入口: (1,1).\n"); printf("出口: (%d,%d).\n",ROW-2,COL-2); printf("■: 墙\n"); printf(": 通道\n"); printf("●: 迷宫路线\n"); printf("◆: 已走迷宫路线但不通\n"); printf("生成迷宫如下: \n"); printf(""); for(j=0;j printf("%d",j); printf("\n"); for(i=0;i { printf("%d",i); for(j=0;j if(maze[i][j]==0) printf(""); elseif(maze[i][j]==1) printf("■"); elseif(maze[i][j]==2) printf("●"); elseif(maze[i][j]==3) printf("◆"); printf("\n"); }printf("输入y生成新迷宫: "); getchar(); }while(getchar()=='y'); } 三、【实现描述(Implement)】(30%) (本部分应包括: 抽象数据类型具体实现的函数原型说明、关键操作实现的伪码算法、函数设计、函数间的调用关系,关键的程序流程图等,给出关键算法的时间复杂度分析。 ) 答: #defineMAX_ROW32 #defineMAX_COL32 intROW,COL; intmaze[MAX_ROW][MAX_COL]; intinitmaze()/*初始化迷宫数组*/ {inti,j; printf("请输入迷宫大小: (X,Y)"); scanf("%d%d",&ROW,&COL); for(i=0;i {maze[i][0]=1; maze[i][COL-1]=1; } for(i=0;i {maze[0][i]=1; maze[ROW-1][i]=1; } srand(time(NULL)); for(i=1;i for(j=1;j { maze[i][j]=rand()%2; } maze[1][1]=0; maze[ROW-2][COL-2]=0; return0; } intway(intX,intY) { if(maze[ROW-2][COL-2]==2)/*递归结束条件*/ return1; else/*递归执行部分*/ if(maze[Y][X]==0) { maze[Y][X]=2; if(way(X,Y-1)) return1; elseif(way(X+1,Y)) return1; elseif(way(X,Y+1)) return1; elseif(way(X-1,Y)) return1; else { maze[Y][X]=3; return0; } } else return0; } voidmain() { inti,j,m;/*循环计数变量*/ do{initmaze(); m=way(1,1); printf("%d\n",m); printf("入口: (1,1).\n"); printf("出口: (%d,%d).\n",ROW-2,COL-2); printf("■: 墙\n"); printf(": 通道\n"); printf("●: 迷宫路线\n"); printf("◆: 已走迷宫路线但不通\n"); printf("生成迷宫如下: \n"); printf(""); for(j=0;j printf("%d",j); printf("\n"); for(i=0;i { printf("%d",i); for(j=0;j if(maze[i][j]==0) printf(""); elseif(maze[i][j]==1) printf("■"); elseif(maze[i][j]==2) printf("●"); elseif(maze[i][j]==3) printf("◆"); printf("\n"); }printf("输入y生成新迷宫: "); getchar(); }while(getchar()=='y'); } 四、【测试结果(Testing)】(10%) 四、【实验总结】(10%) 答: 在这次实验中,我发现对于自己所学知识的运用有很多不同的方法和技巧,不同的方法同样可以达到相同的目的。 我通过这次实验我发现许多的问题都可以通过自己的思维模式的改变来解决。 六、【代码】(10%) (本部分应包括: 完整的代码及充分的注释。 注意纸质的实验报告无需包括此部分。 格式统一为,字体: Georgia,行距: 固定行距12,字号: 小五) #include #include #include #defineMAX_ROW32 #defineMAX_COL32 intROW,COL; intmaze[MAX_ROW][MAX_COL]; intinitmaze()/*初始化迷宫数组*/ {inti,j; printf("请输入迷宫大小: (X,Y)"); scanf("%d%d",&ROW,&COL); for(i=0;i {maze[i][0]=1; maze[i][COL-1]=1; } for(i=0;i {maze[0][i]=1; maze[ROW-1][i]=1; } srand(time(NULL)); for(i=1;i for(j=1;j { maze[i][j]=rand()%2; } maze[1][1]=0; maze[ROW-2][COL-2]=0; return0; } intway(intX,intY) { if(maze[ROW-2][COL-2]==2)/*递归结束条件*/ return1; else/*递归执行部分*/ if(maze[Y][X]==0) { maze[Y][X]=2; if(way(X,Y-1)) return1; elseif(way(X+1,Y)) return1; elseif(way(X,Y+1)) return1; elseif(way(X-1,Y)) return1; else { maze[Y][X]=3; return0; } } else return0; } voidmain() { inti,j,m;/*循环计数变量*/ do{initmaze(); m=way(1,1); printf("%d\n",m); printf("入口: (1,1).\n"); printf("出口: (%d,%d).\n",ROW-2,COL-2); printf("■: 墙\n"); printf(": 通道\n"); printf("●: 迷宫路线\n"); printf("◆: 已走迷宫路线但不通\n"); print
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 实验