7.C语言-图选读.pptx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第7章 图 ;7.1 基 本 术 语 ;图7.1 图的示例 ;无向图(Undigraph):如果图中每条边都是顶点无序对,则称此图为无向图。无向边用圆括号括起的两个相关顶点来表示。所以在无向图中,(v1 v2)和(v2 v1)表示的是同一条边。 如图7.1中的G2和G3都是无向图。其中 V(G2)={v1,v2,v3,v4} E(G2)={(v1,v2),(v1,v3),(v2,v3),(v2,v4),(v3,v4)} V(G3)={v1,v2,v3,v4,v5,v16,v7} E(G3)= {(v1,v2),(v1,v3),(v2,v4),(v2,v5),(v3,v6),(v3,v7)} ;无向完全图(Completed Undigraph)和有向完全图(Completed Digraph):若一个无向图有n个顶点,而每一个顶点与其他n-1个顶点之间都有边,这样的图称之为无向完全图,即共有n(n-1)/2条边。类似地,在有n个顶点的有向图中,若有n(n-1)条弧,即任意两点顶点之间都有双向相反的两条弧连接,则称此图为有向完全图。 子图(Subgraph):设有两个图A和B且满足条件 V(B)V(A) E(B)E(A) 则称B是A的子图。 ; 路径(Path):在图G中,从顶点vp到vq的一条路径是顶点序列(vp,vi1,vi2,…,vin,vq)且(vp,vi1),(vi1,vi2),…,(vin,vq)是E(G)中的边,路径上边的数目称之为该路径长度。对于有向图,其路径也是有向的,路径由弧组成。 简单路径(Simple Path):如果一条路径上所有顶点除起始点和终止点外彼此都是不同的,则称该路径是简单路径。 回路(Cycle)和简单回路:在一条路径中,如果起始点和终止点是同一顶点,则称其为回路。简单路径相应的回路称为简单回路。 ; 连通图(Connected Graph)和强连通图(Strongly Connected Graph):在无向图G中,若从vi到vj有路径,则称vi和vj是连通的。若G中任意两顶点都是连通的,则称G是连通图。对于有向图而言,若G中每一对不同顶点vi和vj之间都有vi到vj和vj到vi的路径,则称G为强连通图。 度(Degree)、入度(Indegree)和出度(Outdegree):若(vi vj)是E(G)中的一条边,则称顶点vi和vj是邻接的,并称边(vi vj)依附于顶点vi和vj。所谓顶点的度,就是依附于该顶点的边数。在有向图中,以某顶点为头,即终止于该顶点的弧的数目称为该顶点的入度;以某顶点为尾,即起始于该顶点的弧的数目称为该顶点的出度。该顶点的入度和出度之和称为该顶点的度。 ;7.2 图的存储结构 ; 例如,图7.1中G1,G2,G3的邻接矩阵分别表示为B1,B2和B3,矩阵的行列号对应于图中结点的序号。 ;在C语言中,图的邻接矩阵存储表示如下。 #define MAXVERTEXNUM 50 int cost[][MAXVERTEXNUM] 根据邻接矩阵的定义,可以得出邻接矩阵建立的算法如下: /*算法描述7.1 邻接矩阵的建立*/ int creatadjmatrix (int cost[][MAXVERTEXNUM]) /*cost二维数组为建立的邻接矩阵*/ {int vexnum,arcnum,i,j,k,v1,v2; scanf (%d,%d,vexnum,arcnum); /*输入图的顶点数和弧数或二倍边数*/ for (i=0;ivexnum;i++) ; for (j=0;ivexnum;j++) cost[i][j]=0;/*给矩阵各元素赋初值0*/ for(k=1;k=arcnum;k++) {printf (v1,v2=); scanf (%d %d,v1,v2); /* 输入所有边或所有弧的一对顶点v1,v2(无向图还要键 入v2,v1)*/ cost[v1][v2]=1;/*cost[v1][v2]=1*/ } return(vexnum) ; };7.2.2 邻接链表 图的邻接链表存储结构是一种顺序分配和链式分配相结合的存储结构。它包括两个部分,一部分是向量,另一部分是链表。 原则上,在链表部分共有n个链表,即每个顶点一个链表。每个链表由一个表头结点和若干个表结点组成。表头结点用来指示第i个顶点vi是否被访问过和所对应的链表指

文档评论(0)

希望之星 + 关注
实名认证
内容提供者

我是一名原创力文库的爱好者!从事自由职业!

1亿VIP精品文档

相关文档