存圖,存鍊錶的時候都一般會使用這個結構體陣列來實現資料的儲存。
結構體實現:
struct eedge[max_size]
;// edge[tot] 是乙個空節點
int tot,head[max_size]
;// tot是記憶體池指標,指向的是最近的乙個還沒有被使用的記憶體區域
// head陣列裡面裝的是下標對應的edge記憶體區塊的序號(對應到的是在edge陣列中的下標)
插入演算法實現:
void
add(
int u,
int v,
int w)
// u是邊的起點,v是邊的終點,w是邊的權值
儲存如下的乙個的時候:
1| | |
2 4 7
| | | |
8 5 3 6|9
在鏈式前項星的儲存結構中如圖所示:
1: 2 4 7 -1
2: 8 5 -1
3:-1
4:3 6 -1
5:-1
6:9 - 1
7:-1
8:-1
9:-1
每個節點做出一條鍊錶,鍊錶中的資料即為這個節點可以一步走到的節點,結束就以-1進行結尾。
拓撲排序 鏈式前項星 (教材版本實現)
include include include include include include include include define fast ios sync with stdio false define ll long long using namespace std const in...
鏈式向前星
我們首先來看一下什麼是前向星.前向星是一種特殊的邊集陣列,我們把邊集陣列中的每一條邊按照起點從小到大排序,如果起點相同就按照終點從小到大排序,並記錄下以某個點為起點的所有邊在陣列中的起始位置和儲存長度,那麼前向星就構造好了.用len i 來記錄所有以i為起點的邊在陣列中的儲存長度.用head i 記...
鏈式前向星
我們首先來看一下什麼是前向星.前向星是一種特殊的邊集陣列,我們把邊集陣列中的每一條邊按照起點從小到大排序,如果起點相同就按照終點從小到大排序,並記錄下以某個點為起點的所有邊在陣列中的起始位置和儲存長度,那麼前向星就構造好了.用len i 來記錄所有以i為起點的邊在陣列中的儲存長度.用head i 記...