Я пытаюсь реализовать линейную функцию поиска для строк в C, но в настоящее время она не работает. Вот мой код:Линейный поиск по LinkedList
// 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 не существует) - и то же самое верно для любого элемента, который мы ищем. Это заставляет меня поверить, что условие (name! = Temp-> name) терпит неудачу, но я не могу для жизни меня понять, почему ... Может ли кто-нибудь дать мне подсказку о том, почему он не работает?
Если это в C, не помечать вопрос C++ пожалуйста. – Rakete1111
Право, это будет иметь в виду. Любое понимание того, что моя проблема здесь? –
Вы автоматически пропускаете свою первую запись, когда назначаете 'temp'. ('temp = linkedList-> head;') – Jamie