




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
广东工业大学华立学院 课 程 设 计(论文)课程名称 数据结构 题目名称 图的遍历 学生学部(系) 专业班级 学 号 学生姓名 指导教师 二八 年 七 月 八 日广东工业大学华立学院课程设计(论文)任务书题目名称数据结构学生学部(系)专业班级姓 名学 号一、课程设计(论文)的内容图的遍历任务:实现图的深度优先, 广度优先遍历算法,并输出原图结构及遍历结果。二、课程设计(论文)的要求与数据(1)函数功能要划分好(2)总体设计应画流程图(3)程序要加必要的注释(4)要提供程序测试方案三、课程设计(论文)应完成的工作(1)按照课程设计要求完成报告,具体内容包括:具体任务;软件环境;算法设计思想及流程图;.源代码;调试分析及算法的改进设想;运行结果;总结;参考文献等。(2)课程设计报告可采用统一规范的格式单面打印,并装订成册上交。(3)以班级为单位刻一张光盘上交。四、课程设计(论文)进程安排序号设计(论文)各阶段内容地点起止日期1布置任务2-2032008.5.272软件设置、收集资料、确定题目2008.5.28-2008.6.223按要求进行设计2008.6.23-2008.7.64完成设计,验收上交2008.7.8五、应收集的资料及主要参考文献1数据结构使用C语言(第3版)朱战立 编,西安交通大学出版社。2四川中外科技文化交流中心 组编(王松 主编).Visual C+ 6.0程序设计与开发指南.北京:高等教育出版社,20043朱晴婷,黄海鹰,陈莲君.Visual C+程序设计基础与实例分析.北京:清华大学出版社,2004发出任务书日期: 2008 年 5 月 27 日 指导教师签名:计划完成日期: 2008 年 7 月 8 日 教学单位责任人签章:目 录任务书1目 录41).具体任务52).软件环境53).算法设计思想及流程图54).源代码:65).调试分析:116).运行结果117).参考文献118).收获及体会12一、具体任务1. 实现图的深度优先,广度优先遍历算法,并输出原图结构及遍历结果。2.通过这次的程序设计,加深对图的遍历的认识,加强编程的能力。二、运行环境(软、硬件环境)硬件环境:CPU 2.0Hz 硬盘160G 内存1G 软件环境:Windows Xp Microsoft Visual C+ 6.0三、算法设计思想及流程图定义变量输入节点的个数创建图打印图 是输出图的遍历if(menu=b) 否 if(menu=d)是 否实现深度递归遍历if(menu=d) 是 否结束输入”b”或者“d四、源代码#define M 20 #include #include #include /*定义图*/ typedef struct int VM; int RMM; int vexnum; Graph; /*创建图*/ void creatgraph(Graph *g,int n) int i,j,r1,r2; g-vexnum=n; /*顶点用i表示*/ for(i=1;iVi=i; /*初始化R*/ for(i=1;i=n;i+) for(j=1;jRij=0; /*输入R*/ printf(请按如下形式(2,4)输入R(0,0 END):n); scanf(%d,%d,&r1,&r2); while(r1!=0&r2!=0) g-Rr1r2=1; g-Rr2r1=1; scanf(%d,%d,&r1,&r2); /*打印图的邻接矩阵*/ void printgraph(Graph *g) int i,j; for(i=1;ivexnum;i+) for(j=1;jvexnum;j+) printf(%2d ,g-Rij); printf(n); /*全局变量:访问标志数组*/ int visitedM; /*访问顶点*/ void visitvex(Graph *g,int vex) printf(%d ,g-Vvex); /*获取第一个未被访问的邻接节点*/ int firstadjvex(Graph *g,int vex) int w,i; for(i=1;ivexnum;i+) if(g-Rvexi=1&visitedi=0) w=i; break; else w=0; return w; /*获取下一个未被访问的邻接节点(深度遍历)*/ int nextadjvex(Graph *g,int vex,int w) int t; t=firstadjvex(g,w); return t; /*深度递归遍历*/ void dfs(Graph *g,int vex) int w; visitedvex=1; visitvex(g,vex); for(w=firstadjvex(g,vex);w0;w=nextadjvex(g,vex,w) if(!visitedw) dfs(g,w); void dfstraverse(Graph *g) int i; for(i=1;ivexnum;i+) visitedi=0; for(i=1;ivexnum;i+) if(!visitedi) dfs(g,i); /*定义队列*/ typedef struct int VM; int front; int rear; Queue; /*初始化队列*/ initqueue(Queue *q) q-front=0; q-rear=0; /*判断队列是否为空*/ int quempty(Queue *q) if(q-front=q-rear) return 0; else return 1; /*入队操作*/ enqueue(Queue *q,int e) if(q-rear+1)%M=q-front) printf(The queue is overflow!n); return 0; else q-Vq-rear=e; q-rear=(q-rear+1)%M; return 1; /*出队操作*/ dequeue(Queue *q) int t; if(q-front=q-rear) printf(The queue is empty!n); return 0; else t=q-Vq-front; q-front=(q-front+1)%M; return t; /*广度遍历*/ void BESTraverse(Graph *g) int i; Queue *q=(Queue *)malloc(sizeof(Queue); for(i=1;ivexnum;i+) visitedi=0; initqueue(q); for(i=1;ivexnum;i+) if(!visitedi) visitedi=1; visitvex(g,g-Vi); enqueue(q,g-Vi); while(!quempty(q) int u,w; u=dequeue(q); for(w=firstadjvex(g,u);w0;w=nextadjvex(g,u,w) if(!visitedw) visitedw=1; visitvex(g,w); enqueue(q,w); /*主程序*/ main() int n; Graph *g=(Graph *)malloc(sizeof(Graph); char menu; printf(请输入节点的个数:n); scanf(%d,&n); creatgraph(g,n); printf(This is the linjiejuzhen of graph:n); printgraph(g); input: printf(Please input b or d or q ,Breadth_first: b Depth_first: d quit: qn); while(menu=getchar()=n); if(menu=b) printf(Breadth_first:n); BESTraverse(g); printf(n); goto input; else if(menu=d) printf(Depth_first:n); dfstraverse(g); printf(n); goto input; else if(menu=q) exit(0); else printf(Input error!Please input b or d!n); 五、调试分析及算法的改进设想1 由于对图的性质和算法掌握的比较好,所以在程序运行是比较顺利,没有遇到大的问题。2 每输入一个结点都要判别是在该边的哪个指针域,增加了时间复杂度,有待改进。3 程序的时间复杂度依赖于输入的结点和边的信息。4 通过本次实习,我在编程上的能力又有所提高。但本程序的可读性还不是很好,在以后的实习过程中会注意该点。5 增加变量,修改程序为动态输入,增加程序适用范围。6 为主函数增加循环功能,让程序能循环运行;六、运行结果七、参 考 文 献1数据结构使用C语言(第3版)朱战立 编,西安交通大学出版社。2 四川中外科技文化交流中心 组编(王松 主编).Visual C+ 6.0程序设计与开发指南.北京:高等教育出版社,20043 朱晴婷,黄海鹰,陈莲君.Visual C+程序设计基础与实例分析.北京:清华大学出版社,2004心得体会通过这次的课程设计巩固和加深了对数据结构的理解,提高综合运用本课程所学知识的能力。培养了我选用参考书,查阅手册及文献资料的能力。培养独立思考,深入研究,分析问题、解决问题的能力。过实际编译系统的分析设计、编程调试,掌握应用软件的分析方法和工程设计方法。够按要求编写课程设计报告书,能正确阐述设计和实验结果,正确绘制系统和程序框图。通过课程设计,培养了我严肃认真的工作作风,逐步建立正确的生产观念、经济观念和全局观念。课程设计是把我们所学的理论知识进行系统的总结并应用于实践的良好
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年贵州省凯里市辅警人员招聘考试题库及答案
- 2025年广西辅警招聘考试题题库(含参考答案)
- 2025年安徽省阜阳市辅警招聘考试题库及答案
- 2025年《中华人民共和国药品管理法》培训试卷及答案
- 期货从业资格之期货投资分析练习题库含答案详解(综合题)
- 2025年6月浙江嘉兴市海宁市卫生健康系统招聘事业单位卫技人员18人模拟试卷及答案详解(名校卷)
- 2025年北京市烟草专卖局(公司)应届高校毕业生招聘(30人)考前自测高频考点模拟试题及答案详解(各地真题)
- 2025年同江市招聘临时工作人员(12人)模拟试卷含答案详解
- 基层法律服务工作者执业核准考试备考题库及答案(云南省大理州2025年)
- 2025年江西省基层法律服务工作者考试能力提高训练题及答案一
- 2025年中国酒店行业白皮书-
- 2025年市场运营专员资格考试试题及答案解析
- 煤矿井下爆破培训课件
- 2025年老年病康复护理技巧应用考核试卷答案及解析
- 2025年医疗卫生信息化系统操作考核答案及解析
- 2025年 七年级上册语文第一单元测试卷含答案
- 临时用电用电安全培训课件
- 2025年广西环保集团第三次公开招聘12人考试参考试题及答案解析
- 输液反应应急预案课件
- 2025年市级科技馆招聘笔试重点解析
- 中国特色社会主义民族宗教理论知识竞赛题库及答案
评论
0/150
提交评论