1. 程式人生 > >資料結構 鏈式前向星

資料結構 鏈式前向星

寫題的時候遇到圖,一般用鄰接矩陣比較方便,但是遇到稀疏圖的時候鄰接矩陣浪費的空間太多,遍歷一遍也很浪費時間,鄰接表寫起來又有點浪費時間,所以我覺得用鏈式前向星最適合
用陣列去模擬連結串列的儲存方式,比連結串列實現得快,但是比不好理解。

struct Edge

{

     int next;

     int to;

     int w;

};

edge[i].next表示與第i條邊同起點的下一條邊的儲存位置(即edge[]的下標),類似於一個結點的指標域。
剩下的兩個相當於結點中的值,都沒有特殊的意義。
edge[i].to表示第i條邊的終點,
edge[i].w為邊權值.

另外還有一個數組head[],它是用來表示以i為起點的第一條邊儲存的位置(也是edge[]的下標),相當於一個儲存頭結點的陣列,每個元素就是一個頭結點。
但是實際上,head[i]記錄的是在輸入中最後一條由i為起點的邊

下面是增加邊的函式

void add(int from,int to,int weight)  
{  
    edge[cnt].w = weight;  
    edge[cnt].to = to;  
    edge[cnt].next = head[from];  
    head[from] = cnt++;  
}

然後是遍歷以begin開始的所有點

for(int i = head[begin]; i != -1; i = edge[i].next){
	//edge[i].to就是遍歷的所有的點
}

這裡是一個用到鏈式前向星的題目
https://blog.csdn.net/D_mengxin/article/details/84585479