gpt4 book ai didi

c - 通过 LinkedList 进行线性搜索

转载 作者:行者123 更新时间:2023-11-30 19:37:09 25 4
gpt4 key购买 nike

我正在尝试用 C 语言实现字符串的线性搜索函数,但它当前不起作用。这是我的代码:

// Linear search for name matching input string

int listSearch(struct LinkedList* linkedList, char name)
{
struct StudentRecord* temp = linkedList->head; // Go to first item in linked list
int count = 0; // Count variable to give index of search item

while((temp != NULL) && (name != temp->name))
{
temp = temp->next;
count++;
}

return count;
}

这是对 listSearch 的函数调用:

printf("\nItem: Tim\nIndex: %d", listSearch(list_1, "Tim"));

“Tim”位于索引 3,但输出始终将他置于索引 4(列表中总共有 4 个项目,因此索引 4 不存在) - 对于我们搜索的任何项目也是如此。这让我相信 (name != temp->name) 条件失败了,但我一生都看不出为什么......有人能给我提示为什么它不起作用吗?

最佳答案

您传递的是一个字符,而不是指向字符的指针,因此,您将字符与字符串指针进行比较。您还需要比较字符串。

int listSearch(struct LinkedList* linkedList, char * name)
{
struct StudentRecord* temp = linkedList; // Go to first item in linked list
int count = 0; // Count variable to give index of search item

while(temp != NULL) {
if (temp->name != NULL && strcmp(name,temp->name)) {
count++;
}
temp = temp->next;

}

return count;
}

关于c - 通过 LinkedList 进行线性搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40247235/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com