免费获取| 专业列表 论文代理
论文天下网


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

  • 论文天下网 |
  • 原创毕业论文 |
  • 论文范文 |
  • 论文下载 |
  • 计算机论文 |
  • 论文降重 |
  • 论文排版 |
  • 外文翻译 |
  • 免费论文 |
  • 开题报告 |
  • 心得体会 |
微信集赞换取论文,低至28个 毕业论文快速高质量降重 如何验证论文网的真实性 本站论文介绍说明

当前位置:论文天下网 -> 免费论文 -> 电子专业
·电子商务原创毕业论文
·法学专业原创毕业论文
·土木工程原创毕业论文
·工商管理专业原创论文
·电气自动化原创毕业论文
·汉语言文学专业原创论文
·会计专业原创毕业论文
·计算机技术原创毕业论文
·人力资源专业原创毕业论文
·市场营销专业原创论文
·信息管理专业原创毕业论文
·学前教育专业原创论文
·教育管理专业原创论文
·小学教育专业原创论文
·应用心理学专业原创论文
·英语专业原创论文
·播音与主持原创毕业论文
·行政管理专业原创论文
·广播电视编导原创毕业论文
·摄影专业原创毕业论文
·广告学专业原创毕业论文
·新闻学专业原创毕业论文
·文化产业管理原创毕业论文
·视觉传达设计原创毕业论文
·表演专业原创毕业论文
·动画专业原创毕业论文
·录音艺术原创毕业论文
·护理专业原创毕业论文
·通信工程原创毕业论文
·金融专业原创毕业论文

本专业推荐:带proteus仿真程序的毕业设计论文

迷宫问题课程设计

目 录 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; }

相关论文 暂无...
财务管理 市场营销 幼儿教育 PLC 单片机 教育 幼儿园 中小企业 教师 内部控制 工程造价 电子商务 PLC 变频调速 供水 系统 应用 控制 交流 变频 电梯 设计 火灾 自动 报警系统 单片机 烟雾 检测 篮球 比赛 计时器  自动售货机 控制系统 电热水器 温度 异步电动机 MATLAB 10kV 配电 线路 控制器 智能交通  机床  机械手 变电站 变压器 自动化 售货机 花样喷泉 立体车库 洗衣机 西门子PLC 组态控制 抢答器 数控车床 自行车 里程 车速 超声波 液位 传感器 密码锁 机构 数控激光 切割机设计 后托架 加工工艺 夹具设计 CA6140 传动轴 注塑 模具设计 液压 风险管理 银行 竞争力 中小企业 内部控制 状况 调查报告 融资 管理 中间业务 实习报告 金融 监管 制度  农村 养老保险 合作医疗 外贸 理财 规划 网上银行 发展现状 个人理财 人民币 升值 
上一篇:模拟交通灯设计 下一篇:基于DSP的语音处理系统的设计
推荐论文 本专业最新论文
四路多段定时开关
贝叶斯分析方法研究
数控直流电源毕业论文
电机过热保护器设计
开关电源设计相关
电子随钻测斜仪电路设计
单片机电子秤设计软件程序清单
气体涡轮流量计
回归分析中的Box-cox变换任务书
环境参数检测系统设计任务书
在基于二分图匹配的课题最优选取方案
对刚体脱离支撑面问题的讨论
铣床X6132改造系统-任务书
液体混合反应系统-任务书
Tags:迷宫问题 2010-12-01 19:16:42【返回顶部】

客服QQ:349991040点击这里给我发消息

微   信:1 7 3 0 4 5 4 5

相关栏目

自动化相关
计算机论文
工程管理论文
法律论文
医学论文
人力资源
电子专业
电气工程
英语论文
行政管理
电子商务
社科文学
教育论文
物流专业
金融专业
财务管理
会计专业
化学化工材料科学
电子通信
环境科学
经济类
机械模具类
报告,总结,申请书
其他专业论文

PLC 变频调速 供水 系统 应用 控制 交流 变频 电梯 设计 火灾 自动 报警系统 单片机 烟雾 检测 篮球 比赛 计时器  自动售货机 控制系统 电热水器 温度 异步电动机 MATLAB 10kV 配电 线路 控制器 智能交通  机床  机械手 变电站 变压器 自动化 售货机 花样喷泉 立体车库 洗衣机 西门子PLC 组态控制 抢答器 数控车床 自行车 里程 车速 超声波 液位 传感器 密码锁 机构 数控激光 切割机设计 后托架 加工工艺 夹具设计 CA6140 传动轴 注塑 模具设计 液压
风险管理 银行 竞争力 中小企业 内部控制 状况 调查报告 融资 管理 中间业务 实习报告 金融 监管 制度  农村 养老保险 合作医疗 外贸 理财 规划 网上银行 发展现状 个人理财 人民币 升值

关于我们 | 联系方式 | 论文说明 | 网站地图 | 免费获取 | 钻石会员 | 原创毕业论文

 

论文天下网提供论文检测,论文降重,论文范文,论文排版,网站永久域名WWW.GEPUW.NET

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

Copyright@ 2009-2017 GEPUW.NET 论文天下网 版权所有