计算哈希表中的字符串数

时间:2013-03-01 20:29:34

标签: c memory-management hash hashtable

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

1 个答案:

答案 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是你在其他功能中有相同的错误,此时你的表是已经坏了。