看下图的样例
网络异常,图片无法展示
|
网络异常,图片无法展示
|
- 图根据边是否有方向,分为无向图、有向图。
- 根据两个点之间是否完全链接可分为,无向完全图、有向完全图
- 权值 有向图里面连接点之间可以有权值
- 度 在无向图中,某个顶点的度是邻接到该顶点的边(或弧)的数目。
在有向图中,度还有"入度"和"出度"之分。某个顶点的入度,是指以该顶点为终点的边的数目。而顶点的出度,则是指以该顶点为起点的边的数目。
顶点的度=入度+出度。
图的存储
邻接矩阵
- 邻接矩阵是用数组来表示的
- 节点一维数组
- 节点到节点的关系二维数组
private char[] mVexs; // 顶点集合 private int[][] mMatrix; // 邻接矩阵 复制代码
- 上面的无向图可以用如下标识的
节点: {A,B,C,D,E,F}
关系: { {'A', 'B'}, {'A', 'C'}, {'B', 'C'}, {'B', 'E'}, {'B', 'F'}, {'C', 'D'}, {'C', 'E'}, {'C', 'F'}, {'E', 'F'}, };
- 无向图的矩阵表示填充0(无连接),1(有连接)
- 有向图的矩阵表示则填充权值,最大值可以表示为不连通的
A B C D E F
A 0 1 1 0 0 0
B 0 0 1 0 1 1
C 0 0 0 1 1 1
D 0 0 1 0 0 0
E 0 1 1 0 0 1
F 0 0 1 1 0 0
邻接表
- 邻接表是拉链表实现的
// 邻接表中表对应的链表的顶点 private class ENode { int ivex; // 该边所指向的顶点的位置 ENode nextEdge; // 指向下一条弧的指针 } // 邻接表中表的顶点 private class VNode { char data; // 顶点信息 ENode firstEdge; // 指向第一条依附该顶点的弧 }; private VNode[] mVexs; // 顶点数组 复制代码
上面的无向图可以用如下表示的
0(A): 1(B) 2(C)
1(B): 2(C) 4(E) 5(F)
2(C): 0(A) 1(B) 3(D) 4(E) 5(F)
3(D): 2(C)
4(E): 1(B) 2(C) 5(F)
5(F) 1(B) 2(C) 4(E)
有向图的连接表表示法
网络异常,图片无法展示
|