我不知道为什么我的搜索代码在哈希表中不起作用。我已经尝试在每行插入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;
}

最佳答案

名称是char*指针。
myNode是struct node*指针。

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

myNode == name始终为假。

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

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

10-08 09:44