所以這裏是我的代碼銷燬鏈表。銷燬C中的鏈接列表
void destroy(node *h){
if (h->next!=NULL){
destroy(h->next);
}
free(h);
h=NULL;
}
的問題是,打印輸出還是一串數字:
11,2,15,3,9,//之前銷燬
28495936,28495968,28496064,28496096 ,0,//銷燬後
不幸的是,由於分配原因,我無法更改void destroy(node *h)
參數。 我試過使用while循環方法,但我仍然得到相同的結果。我也嘗試轉移到左側,並從結尾刪除,但我不能刪除最後一個節點。
在此先感謝。
--edit --- 的要求,這裏是打印功能
void print(node* N){
printf("%d, ", N->value);
if (N->next)
print_set(N->next);
if (N == NULL)
printf("Empty Set");
}
我們可以看到您用來打印列表的代碼嗎? – Kaidjin
你爲什麼要打印你銷燬的清單?如果賦值是'void destroy(node *)'的原型,那麼你不能在調用'destroy()'的函數中改變指針,所以你將不能使指針變爲空以防止打印。 – Eregrith
我已經添加了我的打印代碼。 – User49230