网站地图
范文同学网


自动化 模具 机械 电子 通信 动画 英语范文 工程管理 金融范文 旅游管理 工业工程 生物工程 给排水范文 西门子PLC 历史学 三菱PLC
单片机 财务 会计 法律 行政 物理 物流范文 电子商务 制药工程 包装工程 土木工程 材料科学 汉语言范文 欧姆龙PLC 电压表 松下PLC
计算机 化工 数电 工商 食品 德语 国贸范文 人力资源 教育管理 交通工程 市场营销 印刷工程 机电一体化 数控范文 变电站 文化产业

  • 网站首页|
  • 文档范文|
  • 人工降重|
  • 职称文章发表|
  • 合作期刊|
  • 范文下载|
  • 计算机范文|
  • 外文翻译|
  • 免费范文|
  • 原创范文|
  • 开题报告

联系方式

当前位置:范文同学网 -> 免费范文 -> 电子专业 -> 迷宫问题课程设计
自动化文档范文| 电子机电范文| 测控技术范文| 通信专业范文| 电气工程范文| 通信工程范文| 电子信息工程范文| 免费自动化范文| 免费电子范文| 免费电气范文| 通信范文
·电气自动化原创文章范文 ·学前教育专业原创文章范文 ·国际经济贸易原创文章范文 ·药学专业原创文章范文 ·英语专业原创文章范文 ·公共事业管理原创文章范文
·金融专业原创文章范文 ·广播电视编导原创文章范文 ·电子商务专业原创文章范文 ·法律专业原创文章范文 ·工商管理原创文章范文 ·汉语言文学原创文章范文
·人力资源管理原创文章范文 ·摄影专业原创文章范文 ·心理学专业原创文章范文 ·教育管理原创文章范文 ·市场营销原创文章范文 ·计算机专业原创文章范文
·物流管理专业原创文章范文 ·小学教育专业原创文章范文 ·行政管理专业原创文章范文 ·土木工程管理原创文章范文 ·财务会计专业原创文章范文 ·信息管理信息系统原创范文
·新闻学专业原创文章范文 ·眼视光技术原创文章范文 ·播音与主持原创文章范文 ·广告学专业原创文章范文 ·表演专业原创文章范文 ·动画专业原创文章范文
·视觉传达设计原创文章范文 ·数控技术专业原创文章范文 ·录音艺术原创文章范文 ·光机电应用技术原创范文 ·机电一体化原创文章范文 ·印刷技术专业原创文章范文
·动漫设计与制作原创范文 ·软件技术专业原创文章范文 ·书法学专业原创文章范文 ·应用电子技术原创文章范文 ·电子信息工程技术原创范文 ·机械专业原创文章范文
·酒店管理专业原创文章范文 ·旅游管理专业原创文章范文 ·文化产业管理专业原创范文 ·体育教育专业原创文章范文 ·通信工程专业原创文章范文 ·护理专业原创文章范文

本专业推荐:带proteus仿真程序的文档设计范文  原创文档范文点击进入 → 自动化单片机相关的原创文档范文

迷宫问题课程设计

本文ID:LW12358 ¥
目 录 1问题描述………………………………………………………………...1 2需求分析1 3概要设计1 3.1抽象数据类型定义1 3.2子程序及功能要求1 3.3各程序模块之间的调用关系2 4详细设计2 4.1设计相应数据结构2 4.2主要模块的算法描述3 5测试分析9 6课程设计总结10 参考文献10 附录(源程序清单)10 1 问题描述 ..
目 录 1问题描述………………………………………………………………...1 2需求分析 1 3概要设计 1 3.1抽象数据类型定义 1 3.2子程序及功能要求 1 3.3各程序模块之间的调用关系 2 4详细设计 2 4.1设计相应数据结构 2 4.2主要模块的算法描述 3 5测试分析 9 6课程设计总结 10 参考文献 10 附录(源程序清单) 10 1 问题描述 编制程序给出一条通过迷宫的路径或报告一个“无法通过”的信息。该迷宫是一个M行N列的0-1矩阵,其中0表示无障碍,1表示有障碍。设入口为(1,1)出口为(M,N)每次移动只能从一个无障碍的单元移到其周围8个方向上任一无障碍的单元, 2 需求分析 该算法的基本思想是: (1) 若当前位置“可通”,则纳入路径,继续前进; (2)若当前位置“不可通”,则后退,换方向继续探索; (3)若四周“均无通路”,则将当前位置从路径中删除出去。 3 概要设计 3.1 抽象数据类型定义 typedef struct { int x, y; //坐标 int dir; //方向 }ElemType; typedef struct StackNode//构造栈 { ElemType *base; ElemType *top; int stacksize; }SqStack; 3.2 子程序及功能要求 (1)void Input(char b[M][M]); (2)void Ouput(const char b[M][M]); (3)int FindWay(char maze[M][M]); (4)int NextStep(int *x, int *y, int dir). 3.3 各程序模块之间的调用关系 主函数可调用子程序void Input(char b[M][M]); void Ouput(const char b[M][M]); int FindWay(char maze[M][M]); int NextStep(int *x, int *y, int dir). 4 详细设计 4.1 设计相应数据结构 (1)迷宫类型定义 typedef struct { int x, y; //坐标 int dir; //方向 }ElemType; typedef struct StackNode//构造栈 { ElemType *base; ElemType *top; int stacksize; }SqStack; (2)栈元素类型定义 int InitStack(SqStack *S) //初始化栈 { S->base=(ElemType*) malloc(STACK_INIT_SIZE*sizeof(ElemType)); if(!S->base) { printf("memory allocation failed,goodbye"); exit(1); } S->top=S->base; S->stacksize=STACK_INIT_SIZE; return OK; } 4.2 主要模块的算法描述 #include #include #define M 10 //自己规定为10*10的迷宫 #define OK 1 #define ERROR 0 #define OVERFLOW -1 #define STACK_INIT_SIZE 100 #define STACKINCREMENT 10 int findway(int); int NextStep(int *, int *, int ); typedef struct { int x, y; //坐标 int dir; //方向 }ElemType; typedef struct StackNode//构造栈 { ElemType *base; ElemType *top; int stacksize; }SqStack; int InitStack(SqStack *S) //初始化栈 { S->base=(ElemType*) malloc(STACK_INIT_SIZE*sizeof(ElemType)); if(!S->base) { printf("memory allocation failed,goodbye"); exit(1); } S->top=S->base; S->stacksize=STACK_INIT_SIZE; return OK; } int Push(SqStack *S,ElemType e) //进栈操作 { if(S->top-S->base>=S->stacksize) { S->base=(ElemType*) realloc(S->base,(S->stacksize+STACKINCREMENT)*sizeof(Eleme)); if (!S->base) { printf("memory allocation failed,goodbye"); exit(1); } S->top = S->base+S->stacksize; S->stacksize += STACKINCREMENT; } *S->top++=e; return OK; } int Pop(SqStack *S,ElemType *e) //出栈操作 { if(S->top==S->base) { return ERROR; } *e=*--S->top; printf("%d\n",e); return OK; } int StackEmpty(SqStack *S) //判断栈是否为空 { if(S->top==S->base) return OK; else return ERROR; } void Input(char b[M][M]) //输入时候请注意把一圈都输入为墙即'#' { int i, j; printf("qingshuirumigongxingzhuang:\n"); for (i = 0; i < M; i++) { for (j = 0; j < M; j++) { scanf("%c",&b[i][j]); } getchar();//吃掉内存中的残留换行符号 } } void Ouput(const char b[M][M]) { int i, j; printf("migongxingzhuangwei:\n"); for (i = 0; i < M; i++) { for (j = 0; j < M; j++) { printf("%c",b[i][j]); } printf("\n"); } } int FindWay(char maze[M][M]) { ElemType e; int constep = 1; int x = 1, y = 1; SqStack S; InitStack(&S); do { if (maze[x][y] == ' ') //当第3次时 maze[x][y]!=' ' 照样通不过 { maze[x][y] = '1'; e.x = x; e.y = y; e.dir = 1; Push(&S,e); if (x == M-2 && y == M-2) { printf("cunzaichukou\n"); return 1; } NextStep(&x,&y,1); constep++; } else { Pop(&S,&e); while (e.dir == 4 && !StackEmpty(&S)) { maze[e.x][e.y] = '0'; Pop(&S,&e); } { if (e.dir < 4) { e.dir++; Push(&S,e); x = e.x; y = e.y; NextStep(&x, &y, e.dir); } else { printf("meiyouchukou\n"); return 0; } } } }while(S.top!=S.base); return 0; } int NextStep(int *x, int *y, int dir) { switch(dir) { case 1: (*y)++; break; case 2: (*x)++; break; case 3: (*y)--; break; case 4: (*x)--; break; default: break; } return 0; } int main(void) { char a[M][M]; Input(a); Ouput(a); FindWay(a); Ouput(a); system("pause"); return 0; } 5 测试分析 6 课程设计总结 该次程序设计我作为组长,我先写了任务书,再把模板及其要求告诉了组员,再跟他们一起编写程序、查找资料来修改程序,再一起测试分析,最后以总结结束 通过这次课程设计,我深刻的体会到了数据结构的重要性。学数据结构不只是为了考试,更重要的是它对我们以后也会有很大的帮助,尤其是我们这个注专业。在整个课程设计过程中,我遇到了许多困难,不管是编程序改还是调试等都存在很多问题。一遇到问题我就查看各种资料来解决,但还是又很多不明白的地方,特别是运行的时候我还问了同学。由此我意识到自己有许多要学的,学的也不够认真不够透彻。 参考文献: [1] 严蔚敏,吴伟民. 数据结构(C语言版)[M]. 北京:清华大学出版社,2002 [2] 刘振鹏,张晓莉,郝杰.数据结构[M].北京:中国铁道出版社,2003 [3] 李春葆.数据结构习题与解析(C语言篇)[M].北京:清华大学出版社,2000 附录(源程序清单) #include #include #define M 10 //自己规定为10*10的迷宫 #define OK 1 #define ERROR 0 #define OVERFLOW -1 #define STACK_INIT_SIZE 100 #define STACKINCREMENT 10 int findway(int); int NextStep(int *, int *, int ); typedef struct { int x, y; //坐标 int dir; //方向 }ElemType; typedef struct StackNode//构造栈 { ElemType *base; ElemType *top; int stacksize; }SqStack; int InitStack(SqStack *S) //初始化栈 { S->base=(ElemType*) malloc(STACK_INIT_SIZE*sizeof(ElemType)); if(!S->base) { printf("memory allocation failed,goodbye"); exit(1); } S->top=S->base; S->stacksize=STACK_INIT_SIZE; return OK; } int Push(SqStack *S,ElemType e) //进栈操作 { if(S->top-S->base>=S->stacksize) { S->base=(ElemType*) realloc(S->base,(S->stacksize+STACKINCREMENT)*sizeof(Eleme)); if (!S->base) { printf("memory allocation failed,goodbye"); exit(1); } S->top = S->base+S->stacksize; S->stacksize += STACKINCREMENT; } *S->top++=e; return OK; } int Pop(SqStack *S,ElemType *e) //出栈操作 { if(S->top==S->base) { return ERROR; } *e=*--S->top; printf("%d\n",e); return OK; } int StackEmpty(SqStack *S) //判断栈是否为空 { if(S->top==S->base) return OK; else return ERROR; } void Input(char b[M][M]) //输入时候请注意把一圈都输入为墙即'#' { int i, j; printf("qingshuirumigongxingzhuang:\n"); for (i = 0; i < M; i++) { for (j = 0; j < M; j++) { scanf("%c",&b[i][j]); } getchar();//吃掉内存中的残留换行符号 } } void Ouput(const char b[M][M]) { int i, j; printf("migongxingzhuangwei:\n"); for (i = 0; i < M; i++) { for (j = 0; j < M; j++) { printf("%c",b[i][j]); } printf("\n"); } } int FindWay(char maze[M][M]) { ElemType e; int constep = 1; int x = 1, y = 1; SqStack S; InitStack(&S); do { if (maze[x][y] == ' ') //当第3次时 maze[x][y]!=' ' 照样通不过 { maze[x][y] = '1'; e.x = x; e.y = y; e.dir = 1; Push(&S,e); if (x == M-2 && y == M-2) { printf("cunzaichukou\n"); return 1; } NextStep(&x,&y,1); constep++; } else { Pop(&S,&e); while (e.dir == 4 && !StackEmpty(&S)) { maze[e.x][e.y] = '0'; Pop(&S,&e); } { if (e.dir < 4) { e.dir++; Push(&S,e); x = e.x; y = e.y; NextStep(&x, &y, e.dir); } else { printf("meiyouchukou\n"); return 0; } } } }while(S.top!=S.base); return 0; } int NextStep(int *x, int *y, int dir) { switch(dir) { case 1: (*y)++; break; case 2: (*x)++; break; case 3: (*y)--; break; case 4: (*x)--; break; default: break; } return 0; } int main(void) { char a[M][M]; Input(a); Ouput(a); FindWay(a); Ouput(a); system("pause"); return 0; }

迷宫问题课程设计相关范文
上一篇:模拟交通灯设计 下一篇:基于DSP的语音处理系统的设计
点击查看关于 迷宫问题 的相关范文题目 【返回顶部】
精彩推荐
电气工程自动化原创范文  电子商务原创文章范文
人力资源专业原创文章范文 土木工程原创文章范文
工商管理专业原创范文    药学专业原创范文
汉语言文学专业原创范文  会计专业原创文章范文
计算机技术原创文章范文  金融学原创文章范文
法学专业原创文章范文   市场营销专业原创范文
信息管理专业原创文章范文 学前教育专业原创范文
公共事业管理专业原创范文 英语专业原创范文
教育管理专业原创范文   行政管理专业原创范文
热门范文

关于我们 | 联系方式 | 范文说明 | 网站地图 | 免费获取 | 钻石会员 | 硕士文章范文


范文同学网提供文档范文,原创文章范文,网站永久域名www.lunwentongxue.com ,lunwentongxue-范文同学网拼音首字母组合

本站部分文章来自网友投稿上传,如发现侵犯了您的版权,请联系指出,本站及时确认并删除  E-mail: 17304545@qq.com

Copyright@ 2009-2024 范文同学网 版权所有