【发布时间】:2013-02-16 11:04:46
【问题描述】:
所以,我正在尝试计算哈希表中存在的字符串数。出于某种原因,这个函数总是返回 0。我尝试用稍微不同的方式重写它几次,以找到逻辑中的错误,但是,据我所知,这个函数应该输出条目数桌子。我真的很感激一些帮助,因为这变得非常令人沮丧!谢谢!
/* htbl_n_entries : htbl* -> unsigned int */
/* return the number of entries in all buckets */
unsigned int htbl_n_entries(htbl *t){
int i;
int nbucks = t->n_buckets;
sll**bucks= t->buckets;
unsigned int sum = 0;
for (i = 0; i < nbucks; ++i)
{
while(bucks[i] != NULL){
sum++;
bucks[i] = bucks[i]->next;
}
}
return sum;
}
【问题讨论】:
-
您确认
nbucks> 0 了吗? -
不在这个函数函数中(虽然也许我应该),但是在函数被调用的情况下,有10个桶。
-
我会确保您通过
t传递的对象首先正常工作。也许添加一些简单的cout只是为了看看它的属性是什么。然后担心你的功能。 -
为什么你的计数函数会修改哈希表?
-
您是否考虑过添加一些
printf语句(例如Counting bucket 1/10...)来查看代码在运行时的作用?似乎没有任何问题,所以我认为问题可能是n_buckets错误,甚至哈希表结构本身已损坏。
标签: c memory-management hash hashtable