ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:96.79KB ,
资源ID:12156564      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12156564.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(算法课程设计报告.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

算法课程设计报告.docx

1、算法课程设计报告算法与数据结构课程设计报告题目:教学计划编制问题 专业: 计算机科学与技术 班级: 1002 学号: 1030030242 姓名: 巫爱萍 指导教师: 许文庆 完成日期: 2012 年 6 月 14 日一、课程设计目的本课程设计的目标就是要达到理论与实际应用相结合.提高学生组织数据及编写大型程序的能力.并培养基本的、良好的程序设计技能以及合作能力。设计中要求综合运用所学知识.上机解决一些与实际应用结合紧密的、规模较大的问题.通过分析、设计、编码、调试等各环节的训练.使学生深刻理解、牢固掌握数据结构和算法设计技术.掌握分析、解决实际问题的能力。通过这次设计.要求在数据结构的逻辑特

2、性和物理表示、数据结构的选择和应用、算法的设计及其实现等方面.加深对课程基本内容的理解。同时.在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。二、课程设计内容针对计算机系本科课程.依据其相互依赖关系制定课程安排计划.其相互依赖关系如下图所示.并要求各学期课程数目大致相同且搭配适当。三、课程设计过程1需求分析以无歧义的陈述说明程序设计的任务.强调的是程序要做什么?并明确规定:(1) 输入的形式和输入值的范围;创建邻接表时需要输入顶点数、边数、顶点及其入度和确定弧的两个顶点的下标。(2) 输出的形式;在主函数中输出拓扑排序序列。(3) 程序所能达到的功能;A、求解上图的

3、拓扑排序结果。B、上述课程在4学期上完.要求每学期上课的门数大致一样。(4) 测试数据: 创建邻接表时输入的顶点数:7 创建邻接表时输入的顶点数:8创建邻接表时输入的顶点及其入度分别为:(1,0)、(2,0)、(3,1)、(4,2)、(5,2)、(6,2)、(7,1)创建邻接表时输入的确定弧的两个顶点的下标为:、2概要设计1)本程序包含7个函数: 主函数main() 创建邻接表函数creatgraph(algraph& g) 拓扑排序函数toposort(algraph& g,int n) 各函数间关系如下: 3详细设计实现概要设计中定义的所有数据类型.对每个操作只需要写出伪码算法;对主程序和

4、其他模块也都需要写出伪码算法(伪码算法达到的详细程度建议为:按照伪码算法可以在计算机键盘直接输入高级程序设计语言程序);画出函数和过程的调用关系图。1)typedef struct arcnode int adjvex; /int info; struct arcnode *nextarc; arcnode;2)typedef struct vnode int data; int id; struct arcnode *firstarc;vnode,adjlistMAX_VERTEX_NUM3)typedef struct adjlist vertices; int vexnum,arcnum

5、; /int kind;algraph;4)图的基本操作为了方便用邻接表来存储有向图。algraph creatgraph(algraph& g) int i,j,k; arcnode *p; algraph ag; printf(*n); printf(请输入顶点数:n); scanf(%d,&g.vexnum); printf(请输入边数:n); scanf(%d,&g.arcnum); printf(*n); printf(请输入顶点:); for(i=1;i=g.vexnum;+i) scanf(%d,%d,&g.verticesi.data,&g.verticesi.id); g.v

6、erticesi.firstarc=NULL; printf(请输入确定弧的两个顶点的下标:n); for(k=1;kadjvex=j; p-nextarc=g.verticesi.firstarc; g.verticesi.firstarc=p; return ag;5)拓扑排序的基本操作int toposort(algraph& g,int n) int i,j,k,m=0; int top=0; arcnode *p;/p=(arcnode*)malloc(sizeof(arcnode); for(i=1;iadjvex; g.verticesk.id-; if(g.verticesk.

7、id=0) g.verticesk.id=top; top=k; p=p-nextarc; if(mn) printf(The AOV network has a cyclen); return 0;else return 1;printf(n);6)主函数的基本操作void main() algraph g; creatgraph(g); printf(拓扑排序为:n); toposort(g,7); 4调试分析内容包括:a调试过程中遇到的问题是如何解决的以及对设计与实现的回顾讨论和分析;刚开始编译时很多错.不是分号漏了.就是对应的大小写不正确.因对引用及指针传的是值还是址不够清楚.最后不得

8、不一个一个的改。在运行时也因为对象没弄清楚.一直都产生随机数.还好.认真检查后发现了错误。b算法的时空分析(包括基本操作和其他算法的时间复杂度和空间复杂度的分析)和改进设想;分析算法的时间复杂度:对7个顶点8条边的AOV网建立邻接表需O(15)的时间;搜索入度为0的顶点需O(7)的时间;在拓扑排序过程中若AOV网无环路.每个顶点进一次栈出一次栈各7次.入度减一的操作g.verticesk.id共执行8次.所需时间为O(15)。所以总的时间复杂度为O(15)。c经验和体会等。从这件事中可以看出.自己做事还是不够认真.老是犯一些低级错误。因此.以后不管在学习中还是在工作中都要认认真真的待事.尽量避

9、免不应犯的错误。5用户使用说明程序名为toposort.exe,运行环境为DOS。程序执行后显示 * 请输入顶点数: 请输入边数: * 请输入顶点: 请输入确定弧的两个顶点下标: 拓扑排序为: Press any key to continue: * 在调试无误后进入运行状态.此时界面会提示“请输入顶点数”、“请输入边数”、“请输入顶点”、“请输入确定弧的两个顶点下标”、”拓扑排序为”每执行以上步骤时会显示执行的结果(正确或错误)。6测试结果程序名为toposort.exe,运行环境为DOS。程序执行后显示 在调试无误后进入运行状态.此时界面会提示“请输入顶点数”、“请输入边数”、“请输入顶点

10、”、“请输入确定弧的两个顶点下标”、”拓扑排序为”每执行以上步骤时会显示执行的结果(正确或错误)。7附录#include#include#define MAX_VERTEX_NUM 20/定义表结点typedef struct arcnode int adjvex; / 该弧所指向的顶点的位置 /int info; / 该弧相关信息 struct arcnode *nextarc; / 指向下一条弧的指针arcnode;/表结点类型/定义表头结点typedef struct vnode int data;/顶点域 int id;/入度域 struct arcnode *firstarc;/指向

11、第一个表结点的指针vnode,adjlistMAX_VERTEX_NUM;/邻接表结点类型typedef struct adjlist vertices;/表头结点数组 int vexnum,arcnum;/图的当前顶点数和弧数 /int kind;/图的种类标志algraph;algraph creatgraph(algraph& g) int i,j,k; arcnode *p;/定义一个表结点指针 algraph ag; printf(*n); printf(请输入顶点数:n); scanf(%d,&g.vexnum); printf(请输入边数:n); scanf(%d,&g.arcn

12、um); printf(*n); printf(请输入顶点:); for(i=1;i=g.vexnum;+i) scanf(%d,%d,&g.verticesi.data,&g.verticesi.id);/输出顶点及其入度 g.verticesi.firstarc=NULL;/指向第一个表结点的指针指向空 printf(请输入确定弧的两个顶点的下标:n); for(k=1;kadjvex=j;/弧所指向的顶点的位置赋给j p-nextarc=g.verticesi.firstarc; g.verticesi.firstarc=p; return ag;int toposort(algraph

13、& g,int n)/AOV网以带入度的邻接表g存储.算法求其一种拓扑有序序列 int i,j,k,m=0; int top=0; arcnode *p;/p=(arcnode*)malloc(sizeof(arcnode); for(i=1;iadjvex;/p所指结点邻接点域值送k中 g.verticesk.id-;/第k个表头结点的入度域减一 if(g.verticesk.id=0)/如果入度域为0则压入链栈中 g.verticesk.id=top;/栈顶指针值存入其入度域 top=k;/更新栈顶指针为k p=p-nextarc;/p指向下一个邻接点 if(mn) printf(The

14、AOV network has a cyclen); return 0;else return 1;printf(n);void main() printf(1:高数 2:程序设计 3:离散 4:数据结构 5: 编译 6: 操作 7:组成原理n);algraph g; creatgraph(g); printf(拓扑排序为:n); toposort(g,7); printf(*n); 四、课程设计体会通过五天的课程设计.我巩固了以前学过的知识.懂得了理论与实践相结合的重要性.只有理论知识是远远不够的.理论知识是为将来的实践服务的.理论知识很重要.实践活动更重要。通过课程设计我看到自己实际操作能力的严重不足.知识理解不够深刻.掌握不够牢固.编程基础薄弱.没有耐心。在同学和相关资料的帮助下.最终完成了代码。通过这次设计.我看到自身学习方法存在很多不足.我决心在以后的学习过程中.要多锻炼自己处理实际问题的能力.要提高独立分析问题和解决问题的能力.多动手多上机操作。并且利用假期时间进一步巩固数据结构课程与C语言基础.为今后的学习打下比较坚实的基础。最后.谢谢同学的帮助.谢谢老师的指导和教诲。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1