鄰接矩陣
鄰接矩陣概念
無向圖和有向圖在鄰接矩陣中的表示方法:
有向圖和無向圖的表示方法
無向圖和有向圖大同小異,在這裡隻以無向圖為例,代碼部分通過簡單調整即可對應編譯有向圖
鄰接矩陣資料類型定義
#define MaxVertices 100 //定義最大容量typedef struct{ //包含權的鄰接矩陣的的定義 int Vertices[MaxVertices]; //頂點資訊的數組 int Edge[MaxVertices][MaxVertices]; //邊資訊的數組 int numV; //頂點數 int numE; //邊數}AdjMatrix;
以如關系圖為例
鄰接矩陣關系圖
根據上圖,我們可以寫出對應的鄰接矩陣:
通過這個圖可以看出,無向圖對角線劃分出來的兩部分是互相對稱的,由此即可通過建立無向圖的鄰接矩陣:
void CreateGraph(AdjMatrix *G) //圖的生成函數{ int n,e,vi,vj,w,i,j; printf("請輸入圖的頂點數和邊數(以空格分隔):"); scanf("%d%d