2017-05-06 17 views
-2

私はAdjency Linked Listメモリを解放したいと思っています ここに私のデータ構造体とグラフのメモリを割り当てることができる2つの関数です。 割り当てられたメモリを解放するにはどうすればよいですか?次のコードは、あなたが探していることproblabyます何の助けAdjency Linked Listの割り当てメモリを解放するには?

struct ListPoint { 
    int dest; 
    int weight; 
    struct ListPoint* next; 
}; 
struct List { 
    struct ListPoint* head; 
}; 
struct Graf { 
    int V; 
    struct List* array; 
}; 
struct ListPoint* newAdjencyListPoint(int dest, int weight) 
{ 
    struct ListPoint* newPoint = 
     (struct ListPoint*)malloc(sizeof(struct ListPoint)); 
    newPoint->dest = dest; 
    newPoint->weight = weight; 
    newPoint->next = NULL; 
    return newPoint; 
} 
struct Graf* createGraph(int V) 
{ 
    struct Graf* graf = (struct Graf*)malloc(sizeof(struct Graf)); 
    graf->V = V; 
    graf->array= (struct List*)malloc(V * sizeof(struct List)); 
    int i; 
    for (i = 0; i < V; ++i) 
     graf->array[i].head = NULL; 
    return graf; 
} 

答えて

0

ため ありがとう:「関数」:

freeLinkedList(struct List list){ 
    struct ListPoint *aux,*it = list.head; 
    while(it != NULL){ //free a node and go to the next one 
     aux = it->next; 
     free(it); 
     it = aux; 
    } 
} 
freeAdjList(struct Graf* adj_list){ 
    for(int i=0;i<adj_list->V;i++) //free each linked list 
     freeLinkedList(adj_list->array[i]); 
    free(adj_list->array); //free the linked list array 
    free(adj_list); //free the adj matrix itself 
} 
+0

は、残念ながら、私は、Microsoft Visual Studioの2013 エラー1つのエラーC2440からの次のエラーが発生しました: 'List'から 'List *'に変換できません。 問題は "for"ループにあります:freeLinkedList(adj_list-> array [i]); adj_listに赤い下線が表示される –

+0

エラー: "struct list"タイプの引数が "struct List *"タイプのパラメータと互換性がありません –

+0

これで動作するはずです –

関連する問題