数据图结构的算法论文.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据图结构的算法毕业论文 图 图形结构是一种比树形结构更复杂的线性结构。树形结构中的点之间有明显的层次关系,每一层上的结点只能和上一层中的一个结点相关,但可能和下一层的多个结点相关。在图形结构中,任意两个结点之间都可能相关,即结点与结点之间的邻接关系可以是任意的。因此,图形结构可用来描述更加复杂的对象。 1 图的基本概念存储结构 1.1 图的定义 图(Graph)是由非空的顶点集合V与描述顶点之间关系边(或者弧)的集合E组成,其形式化定义为:G=(V, E) 如果图G中的每一条边都是没有方向的,则称G为图。图中边图中顶点的无序偶对。无序偶对通常用括表示。例如,顶点偶对i,vj)表示顶点i和顶点j相连的边,并且i,vj)与j,vi)表示同一条边。 如果图G中的每一条边都是有方向的,则称G为有向图。有向图中的边是图中顶点的有序偶对,有序偶对通常用尖括号表示。例如,顶点偶对i,vj表示从顶点i指向顶点j的一条有向边;其中,顶点i称为有向边i,vj的起点,顶点j称为有向边i,vj的终点。有向边为弧对弧i,vj来说,vi为弧的起点,称为弧j为弧的终点,称为弧头。图是一种复杂的数据结构,表现在不仅各顶点的度可以不同,而且顶点之间的逻辑关系也错综复杂。从图的定义可知:一个图的信息包括两部分:图中顶点的信息以及描述顶点之间的关系边或弧的信息。因此无论采取什么方法来建立图的存储结构,都要完整、准确反映这两部分的信息。为适于用C语言描述,从本节介绍几种常用的图存储结构。.2 邻接矩阵 所谓邻接矩阵存储结构,就是一维,并用矩阵来表示图中各顶点之间的邻接关系。定图V, E)有n个顶点,即V={0,v1,…,vn-1},则表示G中各顶点相邻关系需用一个nn的矩阵,且矩阵元素为: A[i][j]= 若G是带权图(网),则邻接矩阵可定义为: A[i][j]= 其中,ij表示i,vj)或i,vj上的权值;∞则为计算机上所允许的于所有边上权值的数。无向图的邻接矩阵表示如图7-6所示。 图7-6 无向图邻接矩阵表示有向图的邻接矩阵表示如图7-7所示。 图7-向图邻接矩阵表示带图的邻接矩阵表示如图7-8所示。 图7-图邻接矩阵表示从图的邻接矩阵可以看出下特点: 无向图(包括带权图)的邻接矩阵一定是一个按对角线对称对称矩阵。因此,在具体存放邻接矩阵时只需存放上(或下)三角矩阵的元素即可。 对无向图,邻接矩阵的第i第i列的非零元素(或非∞元素)个数正好是第i个顶点的度Di)。 对有向图,邻接矩阵的第i行非零元素(或非∞元素)的个数正好是第i个顶点的OD(vi),第i列非零元素(或非∞元素)的个数正好是第i个顶点的入度IDi)。 用邻接矩阵存储图,很容易确定图中任意两个顶点之是否有边相连;但是,要确定图中具体有多少条边,则必须按行、列对每一个元素进行查后方能确定,因此花费的时间代价大,这也是用邻矩阵存储图的局限性。 在采用邻接矩阵方式表示图时,除了用一个二维数组存储用于表示顶点相邻关系的矩阵之外,还需要用一个一维数组存储顶点信息。这样,一个图在顺序存储结构下的类定义为; typedef struct { char vertex[MaxNum]; /*顶点为字符型且顶点表的长度小于MaxNm*/ int edges[MaxNum][MaxNum]; /*边整型且edges为邻接矩阵*/ } MGraph; /*MGraph为邻接矩阵存储的图类型*/ 建立一个无向图的邻接矩阵如下:#includestdio.h #includestdlib.h #define MAXSIZE 30 typedef struct { char vertex[MAXSIZE]; //顶点为字符型且顶点表的长度小于MAXSIZE int edges[MAXSIZE][MAXSIZE]; //边为整型且edges为邻接矩阵 }MGraph; //MGraph为采用邻接矩阵存储的图类型 void CreatMGraph(MGraph *g,int e,int n) { //建立无向图的邻接矩阵g-egdes,n为顶点个数,e为边数 int i,j,k; printf(Input data of vertexs(0~n-1):\n); for(i=0;in;i++) g-vertex[i]=i; //读入顶点信息 for(i=0;in;i++) for(j=0;jn;j++) g-edges[i][j

文档评论(0)

你好世界 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档