資料結構 鏈式前向星
阿新 • • 發佈:2018-12-02
寫題的時候遇到圖,一般用鄰接矩陣比較方便,但是遇到稀疏圖的時候鄰接矩陣浪費的空間太多,遍歷一遍也很浪費時間,鄰接表寫起來又有點浪費時間,所以我覺得用鏈式前向星最適合
用陣列去模擬連結串列的儲存方式,比連結串列實現得快,但是比不好理解。
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