搜索不会在哈希表上工作

时间:2014-09-26 11:49:19

标签: c data-structures hashtable

我无法弄清楚为什么我的搜索代码无法在哈希表中运行。我已经尝试在每一行插入printf只是为了看代码的流程,它是正确的,但我仍然无法得到正确的输出。该程序按字母顺序保存哈希表上的单词,并使用链表。因此,如果我搜索以“A”开头的单词,则必须返回Key:1,依此类推。我很感激你能给予的任何帮助:)。

void searchInHash(int key, char *name) {
    int hashIndex = key, flag = 0;
    struct node *myNode;
    myNode = hashTable[hashIndex].head;
    if (!myNode) {
        printf("Search element unavailable in hash table\n");
        return;
    }
    while (myNode != NULL) {
        if (myNode == name) {
            printf("Key: %d\n", hashIndex);
            flag = 1;
            break;
        }
        myNode = myNode->next;
    }
    if (!flag)
       printf("Search element unavailable in hash table\n");
    return;
}

1 个答案:

答案 0 :(得分:2)

name是char*指针。 myNode是一个struct node*指针。

他们不能 相等 ,这意味着,他们拥有相同的内存地址。

myNode == name永远都是假的。

如果要比较指针指向的内容,可以使用string.h函数strcmp()代替。请参阅:http://www.cplusplus.com/reference/cstring/strcmp/

但请确保两个指针都指向实际的字符串(null终止)。它对name很好,但可能与myNode无关。