圖的表示法
- 鄰接矩陣表示法-表示頂點間鄰接關系的矩陣
- 無向圖的鄰接矩陣

(1)無向圖的鄰接矩陣式對稱矩陣,可以壓縮存儲;有n個結點的無向圖需要的存儲空間為n(n+1)/2
(2)無向圖的中,頂點vi的度是鄰接矩陣中的第i行元素之和
-
- 有向圖的鄰接矩陣

(1)有向圖的鄰接矩陣不一定對稱,有n個頂點的有向圖需要存儲空間為n2
(2)有向圖中:頂點vi的出度是鄰接矩陣中第i行元素之和,頂點vi的出度是鄰接矩陣中第i列元素之和
-
- 網的鄰接矩陣(網是帶權的圖)

-
- 鄰接矩陣的數據類型定義
-
1 #define MaxVertexNum 100 //頂點數目最大值 2 typedef char VertexType; //頂點數據類型 3 typedef int EdgeType; //帶權圖中邊上權值的數據類型,如果僅表示表示邊存在與否,可以定義為0,1的枚舉類型 4 typedef struct 5 { 6 VertexType Vex[MaxVertexNum]; //頂點表 7 EdgeType Edge[MaxVertexNum][MaxVertexNum]; //鄰接矩陣邊表 8 int vexnum, arcnum; //圖的當前頂點和弧數 9 }MGraph;
-
- 鄰接矩陣的數據類型定義
- 鄰接表表示法
- 處理
- 圖中頂點用一個一維數組存儲。頂點數組中,每個數據元素還需要存儲指向第一個鄰接點的指針,以便於查找該結點的邊信息
- 圖中每個頂點vi的所有鄰接點構成一個線性表,由於鄰接點的個數不定,所以用單鏈表存儲,無向圖中稱為頂點vi的邊表,有向圖則稱為頂點vi作為弧尾的出邊表
- 無向圖的鄰接表
- 處理

-
- 有向圖的鄰接表

-
- 網的鄰接表
- 對於帶權值的網圖,可以在邊表結點定義中在增加一個weight的數據域,存儲權值即可
- 網的鄰接表

-
- 鄰接表的數據類型定義
-
1 #define MaxVertexNum 100 //頂點數目的最大值 2 typedef char VertexType; 3 typedef int EdgeType; 4 typedef struct ArcNode //邊表結點 5 { 6 int adjVex; //該弧所指向的頂點的位置 7 struct ArcNode *next; //指向下一條弧的指針 8 //infoType info //帶權圖的權值 9 }ArcNode; 10 typedef struct VNode //頂點表結點 11 { 12 VertexType data; //頂點的信息 13 ArcNode *first; //指向第一條依附該頂點的弧的指針 14 }VNode, AdjList[MaxVertexNum]; 15 typedef struct 16 { 17 AdjList vertices; //鄰接表 18 int vernum, arcnum; //圖的頂點數和弧數 19 }ALGraph; //ALGraph是以鄰接表存儲的圖的類型
-
- 鄰接表的數據類型定義
