关键词不能为空

当前您在: 主页 > 英语 >

图的应用的实验报告

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-01 21:54
tags:

-

2021年2月1日发(作者:现在开始)


实验六



图的应用及其实现




一、实验目的



1


.进一步功固图常用的存储结构。



2


.熟练掌握在图的邻接表实现图的基本操作。



3


.理解掌握


AOV


网、


AOE


网在邻接表上的实现以及解决简单 的应用问题。



二、实验内容



[


题目一


]


:从键 盘上输入


AOV


网的顶点和有向边的信息


,


建立其邻接表存储结构


,



后对该图拓扑排序


,


并输出拓扑序列


.


试设计程序实现上述


AOV


网的类型定义和基本操



,


完 成上述功能。



测试数据:教材图


7.28


[


题目二


]


:从键盘上输入

< br>AOE


网的顶点和有向边的信息


,


建立其邻接表存储结构


,



出其关键 路径和关键路径长度。



试设计程序实现上述

< br>AOE


网类型定义和基本操作


,


完成


上述功能。



测试数据:教材图


7.29


三、实验步骤



㈠、数据结构与核心算法的设计描述



基本数据结构:



#define TRUE 1


#define FALSE 0


#define OK 1


#define ERROR 0


#define INFEASIBLE -1



typedef int Status; /* Status

是函数的类型


,


其值是函数结果状态代码,如


OK



*/


#define INFINITY



INT_MAX





//


定义无穷大



#define MAX_VERTEX_NUM



20



typedef int V


ertexType;



typedef int InfoType;



typedef




struct




ArcNode






//


表结点定义



{





InfoType info;



int



adjvex;















//


邻接点域,存放与


V


i


邻接的点在表头数组中的位置

< br>




ArcNode




*nextarc;






//


链域,指示依附于


vi


的下一条边或弧的结点,



}ArcNode;




typedef




struct



VNode







//


表头结点



{





int data;






















//


存放顶点信息




struct



ArcNode



*firstarc;





//


指示第一个邻接点



}VNode,AdjList[MAX_VERTEX_NUM];



typedef struct {













//


图的结构定义




AdjList





vertices;







//


顶点向量









int










vexnum, arcnum;



int







Isquan;//


是否含有权值



} MGraph;


typedef struct


{



int *top;



int *base;



int stacksize;


}Sqstack;


typedef int ElemType;



Status Initstack(Sqstack &s)


{



=(int*)malloc(sizeof(int)*25);







}


if (!)




return ERROR;


=;


ize=25;


return OK;


int indegree[MAX_VERTEX_NUM];


int ve[MAX_VERTEX_NUM];//e


各顶 点的最早发生时间



int vl[MAX_VERTEX_N UM];//


各顶点发生的最晚发生时间



调用的函数



Status Initstack(Sqstack &s)


Status Pop(Sqstack &s,int &e)






//


若栈 不空,则删除


S


的栈顶元素,



//



e


返回其值, 并返回


OK


;否则返回


ERROR


int Push(Sqstack &s,int &e)


int StackEmpty(Sqstack s)





//


若栈 为空栈,则返回


TRUE,


否则返回


F LASE



Status CreateGraph(MGraph &G)


void Display(MGraph &G)


/*


输出图


G


的信息



*/


void FindDegree(MGraph g,int indegree[])


//



=< /p>


图中的各个顶点的入度进行统计,


并将第


i







































//


个顶点的入度数放入

< p>
indegree[i]


int LocateVex(MGraph G,VertexType u)




/*


初始条件


:



G


存在


,u



G


中顶点有相同特征


*/


/*


操作结果


:



G


中存在顶点

u,


则返回该顶点在图中位置


;


否 则返回


-1 */



Status ToopologicalSort (MGraph



g) //


对图进行拓扑排序,并输出拓扑排序的结果




Status ToopologicalOrder (MGraph



g,Sqstack &T)//


拓扑序列



Status CriticalPath(MGraph g,Sqstack T)//


关键路径



㈡、函数调用及主函数设计(



可用函数的调用关系图说明)




void main()


{














}


MGraph g;


Sqstack T;


cout<<


创建图


:n


Cr eateGraph(g);


cout<<


输出图的信息


:n


Display(g);


cout< <


拓扑排序


:n


Toopologic alSort(g);


cout<<


求关键历经:

< p>
n


ToopologicalOrder(g,T);


CriticalPath(g,T);



Main


函数





创建图




拓扑排序



输出图信息



求最小路径





程序调试及运行结果分析




1


)在创建图的过程中需要考虑输入的方便,这就需要标记根据用户选择 是


否需要输入权值,选择不需要权值时就不会有关权值信息的操作。所以这就在图


的结构体中加


ISquan


标记(

< p>
0


表示无权值,其他表示有权值)




2



FindIndeg ree


()函数调用过程就是一个对邻接表遍历的过程,在遍历


过程中需要将弧指向的结点进行入度数组的标记。便定义了一个


Indegree


『』数


组。




3


)在求关键路径时,需要两次用到拓扑排序(其中一次是逆拓扑排 序)



在拓扑排序时还需要注意看看是否有环,若有环则输出提 示信息。







实验总结




通过对拓扑排序和求最小路径的操作,首先加强了对图的存储 结构和图的遍


历的进一步的熟悉和应用,在拓扑排序中还让我们去应用到以前学习的栈的 知识,


温故的同时也在实践的新的理论。


对图的应用是在生活中应用很广泛,同时图的知识点和算法也是我们这学期


学习的精 华,例如求关键路径,用到栈,拓扑排序等经典算法,让我们受益匪浅。



四、主要算法流程图及程序清单




1


、主要算法流程图:












创建图




开始





输入顶点数和边数







输入顶点信息




创建顶点向量的数组








输入弧的信息





创建了图的邻接表







结束









拓扑排序



开始




< /p>


将入度为


0


的压入栈





为空






弹出栈顶元素,输出结点信息并将其邻


接结点的




入度减一,入度为


0


的入栈



结束



2


、程序清单



程序过长,可附主要部分)



#include


#include /* malloc()



*/


#include /* INT_MAX



*/


#include



#include /* exit() */


#define TRUE 1


#define FALSE 0


#define OK 1


#define ERROR 0


#define INFEASIBLE -1



typedef int Status; /* Status

是函数的类型


,


其值是函数结果状态代码,如


OK



*/


#define INFINITY



INT_MAX





//


定义无穷大



#define MAX_VERTEX_NUM



20



typedef int V


ertexType;



typedef int InfoType;



typedef




struct




ArcNode






//


表结点定义



{





InfoType info;



int



adjvex;















//


邻接点域,存放与


V


i


邻接的点在表头数组中的位置

< br>




ArcNode




*nextarc;






//


链域,指示依附于


vi


的下一条边或弧的结点,



}ArcNode;




typedef




struct



VNode







//


表头结点



{




int data;






















//


存放顶点信息




struct



ArcNode



*firstarc;





//


指示第一个邻接点



}VNode,AdjList[MAX_VERTEX_NUM];



typedef struct



{













//


图的结构定义






AdjList





vertices;







//


顶点向量



int










vexnum, arcnum;



int







Isquan;//


是否含有权值






} MGraph;


int indegree[MAX_VERTEX_NUM];


int ve[MAX_VERTEX_NUM];//e


各顶 点的最早发生时间



int vl[MAX_VERTEX_N UM];//


各顶点发生的最晚发生时间




/*


图的邻接表存储


(


存储结构定义


)


的基本操 作


*/


int LocateV


ex(MGraph G


,V


ertexType u)


{




/*


初始条件


:



G


存在


,u



G


中顶点有相同特征


*/



/*


操作结果


:



G


中存在顶点

u,


则返回该顶点在图中位置


;


否 则返回


-1 */



int i;

-


-


-


-


-


-


-


-



本文更新与2021-02-01 21:54,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/595369.html

图的应用的实验报告的相关文章

  • 余华爱情经典语录,余华爱情句子

    余华的经典语录——余华《第七天》40、我不怕死,一点都不怕,只怕再也不能看见你——余华《第七天》4可是我再也没遇到一个像福贵这样令我难忘的人了,对自己的经历如此清楚,

    语文
  • 心情低落的图片压抑,心情低落的图片发朋友圈

    心情压抑的图片(心太累没人理解的说说带图片)1、有时候很想找个人倾诉一下,却又不知从何说起,最终是什么也不说,只想快点睡过去,告诉自己,明天就好了。有时候,突然会觉得

    语文
  • 经典古训100句图片大全,古训名言警句

    古代经典励志名言100句译:好的药物味苦但对治病有利;忠言劝诫的话听起来不顺耳却对人的行为有利。3良言一句三冬暖,恶语伤人六月寒。喷泉的高度不会超过它的源头;一个人的事

    语文
  • 关于青春奋斗的名人名言鲁迅,关于青年奋斗的名言鲁迅

    鲁迅名言名句大全励志1、世上本没有路,走的人多了自然便成了路。下面是我整理的鲁迅先生的名言名句大全,希望对你有所帮助!当生存时,还是将遭践踏,将遭删刈,直至于死亡而

    语文
  • 三国群英单机版手游礼包码,三国群英手机单机版攻略

    三国群英传7五神兽洞有什么用那是多一个武将技能。青龙飞升召唤出东方的守护兽,神兽之一的青龙。玄武怒流召唤出北方的守护兽,神兽之一的玄武。白虎傲啸召唤出西方的守护兽,

    语文
  • 不收费的情感挽回专家电话,情感挽回免费咨询

    免费的情感挽回机构(揭秘情感挽回机构骗局)1、牛牛(化名)向上海市公安局金山分局报案,称自己为了挽回与女友的感情,被一家名为“实花教育咨询”的情感咨询机构诈骗4万余元。

    语文