欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOCX文档下载  

    湘潭大学 数据结构实验6 实验报告 源代码 最短路径 关键路径.docx

    • 资源ID:3118128       资源大小:38.27KB        全文页数:5页
    • 资源格式: DOCX        下载积分:6.99金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要6.99金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    湘潭大学 数据结构实验6 实验报告 源代码 最短路径 关键路径.docx

    湘潭大学 数据结构实验6 实验报告 源代码 最短路径 关键路径“数据结构和算法II”课程实验报告 实验名称:最短路径和关键路径的研究与实现 班级 姓名 学号 实验日期: 实验机时:2 学时 实验成绩: - 一.实验目的: 掌握图的邻接矩阵、邻接表的表示方法 掌握迪杰斯特拉和弗洛伊德的最短路径算法 理解拓扑排序,掌握关键路径的算法 二.加深对图的理解,逐步培养解决实际问题的编程能力实验内容: 基本实验内容: 最短路径和关键路径的实现 三.程序及注释: #include"stdio.h" #include"stdlib.h" #define VEX_NUM 10/定义最大顶点数 #define ARC_NUM 20/定义最多边数 typedef int vertype; struct arcnode/声明边表中结点结构 int adjvex; int dut; /边上的权值 struct arcnode *nextarc; struct node /声明头结点结构 int data; int id; /定点入度 struct arcnode *firstarc; typedef struct node ALgraphVEX_NUM+1; void create_ALgraph(ALgraph g,int e,int n) /建立AOE网的邻接表,e为弧的数目,n为顶点数 struct arcnode *p; int i,j,k,w; printf("请输入顶点的信息和入度,用空格间隔:"); for(i=1;i<=n;i+) /结点下标从1开始 scanf("%d%d",&gi.data,&gi.id); /输入顶点信息和入度 gi.firstarc=NULL; for(k=1;k<=e;k+) /建立边表 printf("请输入边的两个顶点以及边上的权值,用空格间隔:"); scanf("%d%d%d",&i,&j,&w); /输入有向边的两个顶点 p=(struct arcnode *)malloc(sizeof(struct arcnode); p->adjvex=j; p->dut=w; p->nextarc=gi.firstarc; /插入下标为i的边表的第一个结点的位置 gi.firstarc=p; void oupe_ALgraph(ALgraph g,int n) /输出AOE网的邻接表 int i; struct arcnode *p; for(i=1;i<n;i+) p=gi.firstarc; printf("%d,%d->",gi.data,gi.id); while(p!=NULL) printf("%3d%3d",p->adjvex,p->dut); p=p->nextarc; /找下一个邻接点 printf("n"); int Criticalpath(ALgraph g,int n)/求AOE网的各个关键活动 int i,j,k,count; int tpordVEX_NUM+1; /顺序队列 int veVEX_NUM+1,leVEX_NUM+1; int eARC_NUM+1,lARC_NUM+1; int front=0,rear=0;/顺序队列的首尾指针初值为0 struct arcnode *p; for(i=1;i<=n;i+) /各事件最早发生事件初值为0 vei=0; for(i=1;i<=n;i+) if(gi.id=0) /入度为0入队列 tpord+rear=i; count=0; while(front!=rear) front+; j=tpordfront; count+; p=gj.firstarc; while(p!=NULL) k=p->adjvex; gk.id-; if(vej+p->dut>vek) vek=vej+p->dut; if(gk.id=0) tpord+rear=k; p=p->nextarc; if(count<n) /该AOE网有回路 return 0; for(i=1;i<=n;i+) /各事件的最迟发生事件赋初值 lei=ven; for(i=n-1;i>=1;i-) /按拓扑序列的逆序取顶点 j=tpordi; p=gj.firstarc; while(p!=NULL) k=p->adjvex; if(lek-p->dut<lej) lej=lek-p->dut; p=p->nextarc; i=0; for(j=1;j<=n;j+) p=gj.firstarc; while(p!=NULL) /计算各边<Vj-1,Vk>所代表的a(i+1)的ei和li k=p->adjvex; ei=vej; li=lek-p->dut; if(li=ei) /输出关键活动 printf("<v%d,v%d>:%dn",gj.data,gk.data,p->dut); p=p->nextarc; i+; return 1; main ALgraph g; int e,n; int tag; printf("n请输入顶点的个数和边的个数,用空格间隔:"); scanf("%d%d",&n,&e); create_ALgraph(g,e,n); /建立邻接表 printf("n输出邻接表信息:n"); oupe_ALgraph(g,n); /建立输出邻接表 printf("n输出AOE网的关键路径:n"); printf("弧:权值n"); tag=Criticalpath(g,n); /关键活动 if(!tag) printf("AOE网有回路n"); 四.运行结果: 五.实验心得: 数据结构是计算机程序设计的重要理论技术基础。这次课程设计运用C语言作为数据结构和算法的描述语言对数据的存储结构和算法进行描述。这次任务提高了我们对实际问题的解决能力,即运用所学的知识对问题进行分析:了解问题的基本要求,怎样将实际问题转化成学科语言的输入输出,要用到什么知识来存储信息。 虽然这次的课程设计有点困难,在网上借鉴了部分代码的情况下做的还是不够完美,有很多的基本算法思想还不是很理解,但是我没有放弃,让我学会怎样在遇到困难的时候去解决问题,去坚持。同时也让我感受到了数据结构的乐趣,坚定了我学习数据结构的决心。

    注意事项

    本文(湘潭大学 数据结构实验6 实验报告 源代码 最短路径 关键路径.docx)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开