哈希 table 的 unload() 似乎不起作用
unload() of a hash table doens't seem to work
下面的函数应该卸载我的哈希 table node* table[26];
。如果散列 table 已成功卸载,则 returns 为真,否则为假。但在这里,它一直返回 false。
我不知道我做错了什么。
bool unload(void)
{
// TODO
for (int i = 0; i < 26; i++)
{
free_table(table[i]);
if (table[i] != NULL)
{
return false;
}
}
return true;
}
void free_table(node* hash)
{
if (hash == NULL)
{
return;
}
free_table(hash -> next);
free(hash);
hash = NULL;
}
在此代码中
free_table(table[i]);
if (table[i] != NULL)
table[i]
未由 free_table
更新
如果你想更新它,你必须这样做
void free_table(node** hash);
...
free_table(&table[i]);
if (table[i] != NULL)
....
void free_table(node** hash)
{
if (*hash == NULL)
{
return;
}
free_table((*hash) -> next);
free(*hash);
*hash = NULL;
}
ie - c 风格 'pass by reference' ,又名 'double pointer'
下面的函数应该卸载我的哈希 table node* table[26];
。如果散列 table 已成功卸载,则 returns 为真,否则为假。但在这里,它一直返回 false。
我不知道我做错了什么。
bool unload(void)
{
// TODO
for (int i = 0; i < 26; i++)
{
free_table(table[i]);
if (table[i] != NULL)
{
return false;
}
}
return true;
}
void free_table(node* hash)
{
if (hash == NULL)
{
return;
}
free_table(hash -> next);
free(hash);
hash = NULL;
}
在此代码中
free_table(table[i]);
if (table[i] != NULL)
table[i]
未由 free_table
如果你想更新它,你必须这样做
void free_table(node** hash);
...
free_table(&table[i]);
if (table[i] != NULL)
....
void free_table(node** hash)
{
if (*hash == NULL)
{
return;
}
free_table((*hash) -> next);
free(*hash);
*hash = NULL;
}
ie - c 风格 'pass by reference' ,又名 'double pointer'