资源描述:
《《数据结构——C语言描述》第7章:图》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、基本概念图的存储结构图的遍历生成树最短路径拓扑排序第7章图7.1图的基本概念图定义图是由顶点集合(vertex)及顶点间的关系集合组成的一种数据结构:Graph=(V,E)其中V={x
2、x某个数据对象}是顶点的有穷非空集合;E={(x,y)
3、x,yV}是顶点之间关系的有穷集合,也叫做边(edge)集合。有向图与无向图若图G中的每条边都是有方向的,则称G为有向图。有向边也称为弧。若图G中的每条边都是没有方向的,则称G为无向图。完全图对有n个顶点的图,若为无向图且边数为n(n-1)/2,则称其为无向完全图;若为有向图且边数为n(n-1),则称其
4、为有向完全图。邻接顶点若(vi,vj)是一条无向边,则称顶点vi和vj互为邻接点,或称vi和vj相邻接,并称边(vi,vj)关联于顶点vi和vj,或称(vi,vj)与顶点vi和vj相关联。顶点的度一个顶点v的度是与它相关联的边的条数。记作TD(v)。顶点v的入度是以v为终点的有向边的条数,记作ID(v);顶点v的出度是以v为始点的有向边的条数,记作OD(v)。子图设有两个图G=(V,E)和G’=(V’,E’)。若V’V且E’E,则称图G’是图G的子图。路径在图G=(V,E)中,若存在一个顶点序列vp1,vp2,…,vpm,使得(vi,vp1
5、)、(vp1,vp2)、...、(vpm,vj)均属于E,则称顶点vi到vj存在一条路径。若一条路径上除了vi和vj可以相同外,其余顶点均不相同,则称此路径为一条简单路径。起点和终点相同的路径称为简单回路或简单环。图的连通在无向图G中,若两个顶点vi和vj之间有路径存在,则称vi和vj是连通的。若G中任意两个顶点都是连通的,则称G为连通图。非连通图的极大连通子图叫做连通分量。强连通图与强连通分量在有向图中,若对于每一对顶点vi和vj,都存在一条从vi到vj和从vj到vi的路径,则称此图是强连通图。非强连通图的极大强连通子图叫做强连通分量。权某些
6、图的边具有与它相关的数,称之为权。这种带权图叫做网络。12356874ABDCE1079667123151660304535804075权图生成树一个连通图的生成树是它的极小连通子图,在n个顶点的情形下,有n-1条边。生成林若G是一个不连通的无向图,G的每个连通分量都有一棵生成树,这些生成树构成G的生成森林。7.2图的存储结构在图的邻接矩阵表示中,有一个记录各个顶点信息的顶点表,还有一个表示各个顶点之间关系的邻接矩阵。设图A=(V,E)是一个有n个顶点的图,则图的邻接矩阵是一个二维数组A.Edge[n][n],定义:无向图的邻接矩阵是对称的,有
7、向图的邻接矩阵可能是不对称的。邻接矩阵(AdjacencyMatrix)在有向图中,统计第i行1的个数可得顶点i的出度,统计第j列1的个数可得顶点j的入度。在无向图中,统计第i行(列)1的个数可得顶点i的度。网络的邻接矩阵邻接矩阵表示法中图的类型定义:#defineMAXSIZE100/*图的顶点个数*/typedefintdatatype;typedefstruct{datatypevexs[MAXSIZE];/*顶点信息表*/intedges[MAXSIZE][MAXSIZE];*邻接矩阵*/intn,e;/*顶点数和边数*/}graph;
8、21435无向图BADCE有向图215346203050407080有向权图邻接矩阵表示法中无向网络的建立算法voidCreate_Graph(graph*ga){inti,j,k,w;printf("请输入图的顶点数和边数:");scanf("%d",&(ga->n),&(ga->e));printf("请输入顶点信息(顶点编号),建立顶点信息表:");for(i=0;in;i++)scanf("%c",&(ga->vexs[i]));/*输入顶点信息*/for(i=0;in;i++)/*邻接矩阵初始化*/for(
9、j=0;jn;j++)ga->edges[i][j]=0;for(k=0;ke;k++)/*读入边的顶点编号和权值,建立邻接矩阵*/{printf("请输入第%d条边的顶点序号i,j和权值w:",k+1);scanf("%d,%d,%d",&i,&j,&w);ga->edges[i][j]=w;ga->edges[j][i]=w;}}算法分析该算法的执行时间是O(n+n2+e),由于e10、tv1v2v3v4v1v2v3v421123^4^4^3^datafirstvertexnextG5每个链表的上边附设一个表头结点,在表头结点中,除了