1

所以,我试图计算我的哈希表中存在的字符串数。出于某种原因,这个函数总是返回 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;
}
4

1 回答 1

0

bucks[i].每次尝试时,代码中的 while 将设置为 NULL :

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。我的猜测是你在其他函数中有类似的错误,此时你的表已经坏了。

于 2013-03-01T20:42:18.403 回答