我正在使用搜索樹,並查看樹是否結束我檢查它是否爲空。 我的問題是當我使用免費()指針值不成爲NULL。打印功能不正確讀取釋放值
我也嘗試使用指向空閒的指針,然後設置爲NULL,但它沒有工作。
在這種情況下,我想刪除搜索樹上的最大數字,但我的打印函數不識別釋放的值並打印0。
typedef struct nodo {
int val;
struct nodo *l, *r;
} *ABin;
void print (ABin a) {
if (a != NULL) {
print (a -> l);
printf(" %d ",a -> val);
print (a -> r);
}
}
ABin remBiggerA (ABin *a) {
ABin b = (*a), aux = b;
int i = 0;
if (b == NULL) i = 1;
while (i == 0) {
if (b -> r == NULL) {
free (b);
i = 1;
}
else b = b -> r;
}
(*a) = aux;
return aux;
}
「typedef」指針通常是個壞主意。 –
我已經給出了最好的答案,我可以提供所提供的信息,但是如果您將釋放的指針設置爲null,並且您的空白檢查仍未註冊,那麼您遇到了完全不同的(幾乎肯定是基於邏輯的)問題。是否可以發佈一個最小可驗證的例子? –