case 3:cycle=(-1); break; }
注:具体源代码见附录
5 测试分析
测试数据,输出测试的结果,这里的测试数据应该完整和严格。并对结果进行分析。
测试数据及结果如下:
在调试过程中,首先使用的是栈进行存储,但是产生的路径是多条或不是 最短路径,所以通过算法比较,栈算法求得的路径不一定是最短路径,而用队列求得的路径是最短路径。
6 课程设计总结
通过这段时间的课程设计,本人对计算机的应用,数据结构的作用以及C语言的使用都有了更深的了解。尤其是C语言的进步让我深刻的感受到任何所学
的知识都需要实践,没有实践就无法真正理解这些知识以及掌握它们,使其成为自己的财富。在理论学习和上机实践的各个环节中,通过自主学习和请教老师,我收获了不少。当然也遇到不少的问题,也正是因为这些问题引发的思考给我带了收获。从当初不喜欢上机写程序到现在能主动写程序,从当初拿着程序不只如何下手到现在知道如何分析问题,如何用专业知识解决实际问题的转变,我发现无论是专业知识还是动手能力,自己都有很大程度的提高。在这段时间里,我对for、while等的循环函数用法更加熟悉,逐渐形成了较好的编程习惯。在老师的指导帮助下,同学们课余时间的讨论中,这些问题都一一得到了解决。在程序的调试能力上,无形中得到了许多的提高。例如:头文件的使用,变量和数组的范围问题,定义变量时出现的问题等等。
在实际的上机操作过程中,不仅是让我们了解数据结构的理论知识,更重要的是培养解决实际问题的能力,所以相信通过此次实习可以提高我们分析设计能力和编程能力,为后续课程的学习及实践打下良好的基础。
在这次短短的课程实践里,我们得到了老师的关心和帮助。她给了我们很多的信息,与我们一起探讨问题,询问我们遇到了哪些问题并耐心给予指导。当我们遇到技术上难以解决的问题时,她就会指导我们解决问题,她把自己多年来积累的经验教授给我们,使我们顺利地完成了课程实践任务。时间过得真快,大学生活不知不觉就走过了一年,一年的大学学习和课程实践阶段的提高,使我们本身知识得到提高的同时,也增强了我们对未来工作的信心,我们相信自己未来三年的学习更使我们有能力胜任将来的工作。
参考文献
[1] 黄同成,黄俊民,董建寅.数据结构[M].北京:中国电力出版社,2008
[2] 董建寅,黄俊民,黄同成.数据结构实验指导与题解[M].北京:中国电力出版社,2008 [3] 严蔚敏,吴伟民. 数据结构(C语言版)[M]. 北京:清华大学出版社,2002 [4] 刘振鹏,张晓莉,郝杰.数据结构[M].北京:中国铁道出版社,2003
附录(源程序清单) #include"stdlib.h" #include"stdio.h" #define N 39 #define M 39 int X;
int maze[N+2][M+2]; struct point{
int row,col,predecessor; }queue[512]; int head=0,tail=0;
void shoudong_maze(int m,int n){ int i,j;
printf("\n\n");
printf("请按行输入迷宫,0表示通路,1表示障碍:\n\n"); for(i=0;i<m;i++) for(j=0;j<n;j++)
scanf("%d",&maze[i][j]);} void zidong_maze(int m,int n){ int i,j;
printf("\n迷宫生成中……\n\n"); system("pause"); for(i=0;i<m;i++) for(j=0;j<n;j++)
maze[i][j]=rand()%2;
//由于rand()产生的随机数是从0到RAND_MAX
//RAND_MAX是定义在stdlib.h中的,其值至少为32767)
//要产生从X到Y的数,只需要这样写:k=rand()%(Y-X+1)+X;
}
void print_maze(int m,int n){ int i,j;
printf("\n迷宫生成结果如下:\n\n"); printf("迷宫入口\n"); printf("↓");
for(i=0;i<m;i++) {printf("\n"); for(j=0;j<n;j++)
{if(maze[i][j]==0) printf("□"); if(maze[i][j]==1) printf("■");} }
printf("→迷宫出口\n"); }
void result_maze(int m,int n){ int i,j;
printf("迷宫通路(用☆表示)如下所示:\n\t"); for(i=0;i<m;i++) {printf("\n"); for(j=0;j<n;j++)
{if(maze[i][j]==0||maze[i][j]==2) printf("□"); if(maze[i][j]==1) printf("■"); if(maze[i][j]==3) printf("☆"); } } }
void enqueue(struct point p){ queue[tail]=p; tail++; }
struct point dequeue(){ head++;
return queue[head-1]; }
int is_empty(){
return head==tail; }
void visit(int row,int col,int maze[41][41]){ struct point visit_point={row,col,head-1}; maze[row][col]=2; enqueue(visit_point); }
int mgpath(int maze[41][41],int m,int n){ X=1;
struct point p={0,0,-1}; if(maze[p.row][p.col]==1)
{printf("\n===============================================\n");
printf("此迷宫无解\n\n");X=0;return 0;} maze[p.row][p.col]=2; enqueue(p);
while(!is_empty()) {p=dequeue();
if((p.row==m-1)&&(p.col==n-1)) break;
if((p.col+1<n)&&(maze[p.row][p.col+1]==0))
visit(p.row,p.col+1,maze);
if((p.row+1<m)&&(maze[p.row+1][p.col]==0)) visit(p.row+1,p.col,maze);
if((p.col-1>=0)&&(maze[p.row][p.col-1]==0)) visit(p.row,p.col-1,maze);
if((p.row-1>=0)&&(maze[p.row-1][p.col]==0)) visit(p.row-1,p.col,maze);
}
if(p.row==m-1&&p.col==n-1)
{printf("\n==================================================================\n");
printf("迷宫路径为:\n");
printf("(%d,%d)\n",p.row,p.col); maze[p.row][p.col]=3; while(p.predecessor!=-1) {p=queue[p.predecessor];
printf("(%d,%d)\n",p.row,p.col); maze[p.row][p.col]=3; } } else
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说公务员考试数据结构课程设计论文 Microsoft Word 文档(3)在线全文阅读。
相关推荐: