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