所以,我试图计算哈希表中的字符串数。由于某些原因,此函数始终返回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/

10-10 18:36
查看更多