所以,我正在尝试计算哈希表中存在的字符串数量。出于某种原因,这个函数总是返回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;
}
答案 0 :(得分:0)
代码中的while将设置为NULL bucks[i].
尝试:
sll**bucks= t->buckets;
unsigned int sum = 0;
for (i = 0; i < nbucks; ++i)
{
sll*bucks_= bucks[i];
while(bucks_ != NULL){
sum++;
bucks_ = bucks_->next;
}
}
这只是一个错误,但不解释为什么返回0.它正确计数第一次,但任何其他时间将为0.我的gess是你在其他功能中有相同的错误,此时你的表是已经坏了。