数据结构图资料.pptx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构第三次讨论课 对图进行数据存储与表示 实现图的最短路径算法 利用图的运算完成校内导航系统路径计算 主要内容: 一、图的存储与表示 邻接矩阵:是表示顶点之间相邻关系的矩阵。设G=(V,E)是一个图,其中V={v1,v2,…,vn}。G的邻接矩阵是一个具有下列性质的n阶方阵: ①对无向图而言,邻接矩阵一定是对称的,而且对角线一定为零(在此仅讨论无向简单图),有向图则不一定如此。 ②在无向图中,任一顶点i的度为第i列所有元素的和,在有向图中顶点i的出度为第i行所有元素的和,而入度为第i列所有元素的和。 ③用邻接矩阵法表示图共需要n^2个空间,由于无向图的邻接矩阵一定具有对称关系,所以扣除对角线为零外,仅需要存储上三角形或下三角形的数据即可,因此仅需要n(n-1)/2个空间 设G=(V,E)是具有n个顶点的图,则G的邻接矩阵是具有如下性质的n阶方阵: 图的矩阵 下图中无向图G 5 和有向图G 6 的邻接矩阵分别为A l 和A 2? 网络矩阵 若G是网络,则邻接矩阵可定义为: 下面带权图的两种邻接矩阵分别为A 3 和A 4? template class T, class E class Graphmtx : public GraphT, E { friend istream operator ( istream in, GraphmtxT, E G); //输入 用邻接矩阵表示的图的类定义 #include SeqList.h //包含动态数组结构的顺序表类 template class T class AdjMWGraph { private: SeqListT Vertices; //顶点顺序表 int Edge[MaxVertices][MaxVertices]; //边权值数组 int numOfEdges; //边的个数 void DepthFirstSearch(const int v, int visited[], void Visit(T item)); void BroadFirstSearch(const int v, int visited[], void Visit(T item)); public: AdjMWGraph(const int sz = MaxVertices); //构造函数 ~AdjMWGraph(void){}; //析构函数 int NumOfVertices(void) //取顶点个数 {return Vertices.Size();} int NumOfEdges(void) //取边的个数 {return numOfEdges;} T GetValue(const int v); //取顶点数值 int GetWeight(const int v1, const int v2); //取边的权值 void InsertVertex(const T vertex); //插入顶点 void InsertEdge(const int v1, const int v2, int weight); //插入边 void DeleteVertex(const int v); //删除顶点 void DeleteEdge(const int v1, const int v2); //删除边 int GetFirstNeighbor(const int v); //取第一个邻接顶点 int GetNextNeighbor(const int v1, const int v2); //取下一个邻接顶点 邻接表是邻接矩阵的改进形式。为此需要把邻接矩阵的各行分别组织为一个单链表。 在邻接表中,同一个顶点发出的边链接在同一个边链表中,每一个链结点代表一条边(边结点),结点中有另一顶点的下标 dest 和指针 link。对于带权图,边结点中还要保存该边的权值cost。 顶点表的第 i 个顶点中保存该顶点的数据,以及它对应边链表的头指针adj。 邻接表: 无向图的邻接表: 统计某顶点对应边链表中结点个数,可得该顶点的度。 某条边(vi, vj)在邻接表中有两个边结点,分别在第 i 个顶点和第 j 个顶点对应的边链表中。 有向图的邻接表和逆邻接表: 网络 (带权图) 的邻接表: 统计出边表中结点个数,得到该顶点的出度; 统计入边表中结点个数,得到该顶点的入度。 用邻接表表示的图的类定义 template class T, class E struct Edge { //边结点的定义 int dest; //边的另一顶点位置 E cost;

文档评论(0)

tt435678 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档