通过LinkedList进行线性搜索

时间:2016-10-25 18:34:24

标签: c search linked-list linear

我试图在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"));

'添'在索引3处,但输出始终将他置于索引4(列表中总共有4个项目,因此索引4不存在) - 对于我们搜索的任何项目也是如此。这让我相信(名字!= temp->名称)条件失败,但我不能为我的生活看到原因......任何人都可以给我一个暗示为什么它不是&# 39;工作?

2 个答案:

答案 0 :(得分:0)

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

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;
}

答案 1 :(得分:0)

使用strcmp比较两个字符串,例如:

if(strcmp(a,b)==0)
     printf("Entered strings are equal");
else
    printf("Entered strings are not equal");