我有一個任務,用C編寫Graph ADT,它實現了運行寬度優先搜索。當我調用圖析構函數時,我得到:分段錯誤(核心轉儲)。圖C中的ADT析構函數C
Graph ADT使用一個List數組來表示相鄰的頂點。 數組中的元素編號與該頂點的數字標籤相同。
Graph ADT有3個數組字段,顏色,距離和父項。數組中的每個第i個元素都是頂點的數字標籤,存儲在該索引處的數據可以是顏色的表示(對於BFS),也可以是與BFS中使用的源頂點的距離,也可以是該頂點的直接父項頂點。 每個數組的初始化如下:
G->color = calloc(n+1, sizeof(int));
「N」是數G.
這裏一個頂點是我試圖實現析構函數:
void freeGraph(GraphRef* pG){
int i;
int n = getOrder(*pG) /* the number of vertices in pG */
for(i = 1; i <=n; i++){
freeList((*pG)->adj[i]); /*free the list containing i's adjacent vertices*/
}
free((*pG)->color);
free((*pG)->distance);
free((*pG)->parent);
*pG = NULL;
}
我不確定我做錯了什麼。任何建議將不勝感激!
可以共享特定的空閒列表的代碼;我在當前的代碼中找不到任何問題。 – Viswesn