所以,我试图计算哈希表中的字符串数。由于某些原因,此函数始终返回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;
}
最佳答案
代码中的while将设置为空,每次尝试:
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。我的格思是,你在其他函数中有相似的错误,此时你的表已经全部损坏。
关于c - 计算哈希表中的字符串数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15166329/