1. 程式人生 > >使用陣列來模擬鄰接表儲存圖資訊

使用陣列來模擬鄰接表儲存圖資訊

一般使用鄰接表儲存圖資訊的資料結構如下圖

vector<int> vec[N];

使用陣列模擬鄰接表的資料結構如下圖(這個儲存方法很新穎,可以瞭解一下,以前在別人的演算法中屢次遇見,今天才明白它的儲存邏輯)

int head[N];

int p[M];  儲存的是邊指向的點下標

int nextP[M]; 儲存的是邊

int edgecnt = 0;

//加入邊

void addedge(int u, int v) // u -> v

{

++edgecnt ;

p[edgecnt] = v;

nextP[edgecnt] = head[u];

head[u] = edgecnt;

}

//遍歷u的邊 

for (int i = head[u]; i; i = nextP[i])

{

v = p[i];

}