我們知道儲存圖可以用鄰接表、鄰接矩陣等,但是其占用空間大,比較適合於一些小型圖。當儲存一些大型圖即有很多結點時,我們可以考慮用前向星和鏈式前向星。其中前向星得用到快速排序,其耗費時間稍長,其放在下一回討論。本次著重討論鏈式前向星。鏈式前向星是基於邊集來儲存的。對於一條邊,其起點為v,其終點為u,其權值為w。我們先定義一邊集結構體。
struct edges;
下面是定義了新增邊的函式。
void add_edges(int v,int u)
巧妙的對edges陣列進行了反向遍歷,即借由上一層的head陣列不斷向上跳到同一起點的邊上 理解鏈式前向星
我們首先來看一下什麼是前向星.前向星是一種特殊的邊集陣列,我們把邊集陣列中的每一條邊按照起點從小到大排序,如果起點相同就按照終點從小到大排序,並記錄下以某個點為起點的所有邊在陣列中的起始位置和儲存長度,那麼前向星就構造好了.用len i 來記錄所有以i為起點的邊在陣列中的儲存長度.用head i 記...
深度理解鏈式前向星
我們首先來看一下什麼是前向星.前向星是一種特殊的邊集陣列,我們把邊集陣列中的每一條邊按照起點從小到大排序,如果起點相同就按照終點從小到大排序,並記錄下以某個點為起點的所有邊在陣列中的起始位置和儲存長度,那麼前向星就構造好了.用len i 來記錄所有以i為起點的邊在陣列中的儲存長度.用head i 記...
深度理解鏈式前向星
我們首先來看一下什麼是前向星.前向星是一種特殊的邊集陣列,我們把邊集陣列中的每一條邊按照起點從小到大排序,如果起點相同就按照終點從小到大排序,並記錄下以某個點為起點的所有邊在陣列中的起始位置和儲存長度,那麼前向星就構造好了.用len i 來記錄所有以i為起點的邊在陣列中的儲存長度.用head i 記...