【数据结构应用题】图的应用

本文探讨了图的性质,包括无向图、有向图的节点数、边数、度数等,并通过代码实现顺序存储和链式存储的图。接着介绍了最小生成树的概念,用Prim和Kruskal算法在不同图上求解最小生成树。同时,讨论了最短路径问题,以Dijkstra算法和BFS算法为例进行了详细解释。此外,文章还涵盖了拓扑排序的实现和关键路径的计算及其实际意义。
摘要由CSDN通过智能技术生成

图的应用

图的性质

总结无向图、有向图的结点数、边数、度数、连通性、强连通性等性质之间的联系

图的数据结构定义

写代码:定义一个顺序存储的图(邻接矩阵实现)

#define MaxVertexNum 150		//顶点数目的最大值
typedef char VertexType;		//顶点的数据类型
typedef int EdgeType;			//带权图中边上权值的数据类型
typedef struct MGraph {
   
	int vernum;					//顶点数
	int edgenum;				//边数
	VertexType vertex[MaxVertexNum];			//顶点信息(一维数组)
	EdgeType Edge[MaxVertexNum][MaxVertexNum];	//边信息(二维数组)
}MGraph;

写代码:定义一个链式存储的图(邻接表实现)

#define MaxVertexNum 150		//顶点数目的最大值
typedef struct ArcNode {
   		//边结点
	int adjVex;					//与对应头结点邻接的顶点编号
	struct ArcNode* nextArc;	//(指向下一个边结点)的指针
	int weight;					//(可有可无)对于带权图可存储边的权值
}ArcNode;
typedef char VertexType;
typedef struct VNode {
   			//头结点
	VertexType data;			//顶点信息
	ArcNode* first;				//(指向第一个邻接点)的指针
}VNode,adjList[MaxVertexNum];	//所有头结点放到数组中
typedef struct ALGraph{
   
	int verNum;					//图的顶点数
	int edgeNum;				//图的边数
	adjList vertices;			//顶点表(邻接表)
}ALGraph;						//ALGraph是以邻接表存储的图的类型

自己设计一个不少于6个结点的带权无向图,并画出其邻接矩阵、邻接表的样子

带权无向图:
在这里插入图片描述
邻接矩阵:
在这里插入图片描述
邻接表:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值