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

上传人:小飞机 文档编号:3118128 上传时间:2023-03-10 格式:DOCX 页数:5 大小:38.27KB
返回 下载 相关 举报
湘潭大学 数据结构实验6 实验报告 源代码 最短路径 关键路径.docx_第1页
第1页 / 共5页
湘潭大学 数据结构实验6 实验报告 源代码 最短路径 关键路径.docx_第2页
第2页 / 共5页
湘潭大学 数据结构实验6 实验报告 源代码 最短路径 关键路径.docx_第3页
第3页 / 共5页
湘潭大学 数据结构实验6 实验报告 源代码 最短路径 关键路径.docx_第4页
第4页 / 共5页
湘潭大学 数据结构实验6 实验报告 源代码 最短路径 关键路径.docx_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《湘潭大学 数据结构实验6 实验报告 源代码 最短路径 关键路径.docx》由会员分享,可在线阅读,更多相关《湘潭大学 数据结构实验6 实验报告 源代码 最短路径 关键路径.docx(5页珍藏版)》请在三一办公上搜索。

1、湘潭大学 数据结构实验6 实验报告 源代码 最短路径 关键路径“数据结构和算法II”课程实验报告 实验名称:最短路径和关键路径的研究与实现 班级 姓名 学号 实验日期: 实验机时:2 学时 实验成绩: - 一.实验目的: 掌握图的邻接矩阵、邻接表的表示方法 掌握迪杰斯特拉和弗洛伊德的最短路径算法 理解拓扑排序,掌握关键路径的算法 二.加深对图的理解,逐步培养解决实际问题的编程能力实验内容: 基本实验内容: 最短路径和关键路径的实现 三.程序及注释: #includestdio.h #includestdlib.h #define VEX_NUM 10/定义最大顶点数 #define ARC_N

2、UM 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 arcn

3、ode *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;kadjvex=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;

4、i,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(

5、i=1;i=n;i+) /各事件最早发生事件初值为0 vei=0; for(i=1;iadjvex; gk.id-; if(vej+p-dutvek) vek=vej+p-dut; if(gk.id=0) tpord+rear=k; p=p-nextarc; if(countn) /该AOE网有回路 return 0; for(i=1;i=1;i-) /按拓扑序列的逆序取顶点 j=tpordi; p=gj.firstarc; while(p!=NULL) k=p-adjvex; if(lek-p-dutdut; p=p-nextarc; i=0; for(j=1;j=n;j+) p=gj.fi

6、rstarc; while(p!=NULL) /计算各边所代表的a(i+1)的ei和li k=p-adjvex; ei=vej; li=lek-p-dut; if(li=ei) /输出关键活动 printf(:%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_A

7、Lgraph(g,n); /建立输出邻接表 printf(n输出AOE网的关键路径:n); printf(弧:权值n); tag=Criticalpath(g,n); /关键活动 if(!tag) printf(AOE网有回路n); 四.运行结果: 五.实验心得: 数据结构是计算机程序设计的重要理论技术基础。这次课程设计运用C语言作为数据结构和算法的描述语言对数据的存储结构和算法进行描述。这次任务提高了我们对实际问题的解决能力,即运用所学的知识对问题进行分析:了解问题的基本要求,怎样将实际问题转化成学科语言的输入输出,要用到什么知识来存储信息。 虽然这次的课程设计有点困难,在网上借鉴了部分代码的情况下做的还是不够完美,有很多的基本算法思想还不是很理解,但是我没有放弃,让我学会怎样在遇到困难的时候去解决问题,去坚持。同时也让我感受到了数据结构的乐趣,坚定了我学习数据结构的决心。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号