图形(Graph)结构
什么是图形结构:由有穷且非空的顶点和顶点之间的边组成的集合
通常表示: G(V,E) G表示一个图,V是图中顶点(元素)集合,E是图中边(元素之间的关系)的集合
无向图:
边用(A,B)方式表示,点与点之间是互通的
在无向图中,任意两个顶点之间都有边,该图称为无向完全图,则含有n个顶点的无向完全图有 n*(n-1)/2 条边
有向图:
边用<A,B>方式表示,仅表示从A点到B点有边,有向图中边也叫做弧,A是弧尾,B是弧头
在有向图中,任意两个顶点之间都有方向相反的两条弧,这种图称为有向完全图,则含有n个顶点的有向完全图有 n*(n-1) 条边
注意:不讨论顶点到它自身的边,而且也不讨论重复出现的边,这种图叫做简单图,数据结构中只研究简单图
点多边少的图叫做稀疏图,反之叫做稠密图,图中顶点到顶点之间的边如果带上数据,这些数据叫做边的权重,带权重的图称为带权图,也叫做网
依附于顶点的边的数量称为该顶点的度,有向图中度又分为出度(从该顶点出发的弧的数量)、入度(指向该顶点的弧的数量)
路径:从顶点到另一个顶点经过的边叫做路径,边的数量叫做该路径的长度
环:图中有某个顶点最后能通过边绕回到该点
回路:专指有向图,从某点出发,最终又有弧能够回到该点,如果某点只有输出、没有输入时,该点一定没有回路
注意:顶点序列中不重复出现的路径称为简单路径
如果顶点V到顶点V1之间有路径,则称V和V1是连通的,如果图中任意两个顶点之间是连通的,称为连通图,如果一个图中有n个顶点,那么至少需要 n-1 条边才能够达到连通图,如果仅需要n-1条边的连通图,也叫做生成树,如果在配上权重,代价最小的叫做最小生成树
图的存储结构
邻接矩阵:
用一个一维数组来存储n个顶点,用一个n*n的二维数组存储顶点之间的边<