数据结构:图

/**
 * 图:G(V,E) V顶点,E边  有向边<a,d> 无向边(a,d)
 * 无向完全图:任意2个顶点之间都存在边。共(n*(n-1) / 2)条边
 * 有向完全图:任意2个顶点之间都存在方向互为相反的2条弧。 共 n*(n-1)条边
 * 权:图中边带数字的
 * 度:相邻边的数目。边数=每个顶点度的和*2 。
 *      无向图的度:TD(V)
 *      有向图的度:入度ID(V)=出度OD(V)  TD(V)=ID(V)+OD(V)
 * 连通分量:是一个图的子图;且是连通的;含有极大顶点数;具有极大顶点数的连通子图包含依附于这些顶点的所有边
 * 连通图的生成树:n个结点,n-1条边
 * 有向树:有向图中一顶点入度为0,其余顶点入度为1
 */

图存储结构

/**
 * 邻接矩阵:一个一维数组存图中顶点信息,一个二维数组存图中的边或弧的信息
 *   图   a
 *   b       c
 *        d
 *如:{"A","B","C","D"};s={{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0}};
 * s[0][1]=0 A和B之间没有边;=1 有边
 * s[0][x]的和为A的度;其中为1的是邻结点
 *
 * 邻接表:一个一维数组存图中顶点信息,顶点信息包含data和firstEdge,firstEdge(adjvex、next)指向边
 * 0 a|FE FE->[1|N] N->[2|N] ...
 * 1 b|FE ...
 * 2 c|FE ...
 *
 * 对有向图而言,邻接表是有缺点的。关系出度,入度麻烦
 *
 * 十字链表:邻接表和逆邻接表整合在一起  有向图的优化存储结构
 *      VertexNode[data|firstIn|firstOut]
 *      EdgeNode[tailIdx|headIdx|headLink|tailLink]
 * v0(tail)->v3(head)       firstOut->EdgeNode(v3)  tailIdx=0,headIdx=3  headLink|tailLink 都是空
 * v1->v0,v2->v0  v0的firstIn->EdgeNode(v1)   tailIdx=1,headIdx=0  headLink->EdgeNode(v2)   tailLink
 *
 *
 * 邻接多重表:适用对已访问的表作标记/删除某条边  无向图的优化存储结构
 *      EdgeNode[ivex|ilink|jvex|jlink] 边
 *      ivex和jvex:是边的两个顶点在顶点表中的下标
 *      ilink和jlink:依附于顶点ivex或jvex的下一条边
 *      顶点      边
 *            ivex    ilink   jvex   jlink
 *      v0     0               1
 *      v1     1               2
 *      v2     2               3
 *      v3     3               0
 *             0               2
 *     01边是v0的第一条边;它的另一条边是30,所以ilink->30;30中的jvex=0,v0的第三条边,jlink->02
 *
 * 边集数组:2个一维数组。一个存储顶点信息;一个存储边信息
 *      EdgeNode[begin|end|weight]
 *      起点下标|终点下标|权值
 */
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值