@keddad
Ученик

Как реализовать поиск по Linked List?

У меня есть класс Node
class Node {
    public:
        int value;
        Node* next = NULL;
};


И функция, которая должна пробегать по этому Linked List в поисках нужного элемента:
bool find(Node* node, int element) {
    if(node -> value == element) return true;
    else if(node -> value) return find(node -> next, element);
    else return false;
}


Но оно не проходит и первого теста:
Failed test #1. Wrong answer
Input:
2
0 -> 1 -> 2 -> 3 -> 4 -> 5
Your output:
false
Correct output:
true

Что я делаю не так?
  • Вопрос задан
  • 95 просмотров
Решения вопроса 1
myjcom
@myjcom
Условие
bool find(node* n, int value)
{
    node* ptr = n;
    while(ptr != nullptr)
    {
        if(ptr->value == value) return true;
        ptr = ptr->next;
    }
    return false;
}

node* find(node* n, int value)
{
    node* ptr = n;
    while(ptr != nullptr)
    {
        if(ptr->value == value) return ptr;
        ptr = ptr->next;
    }
    return ptr;
}

node* result = find(...);
if(result)
{
    //...
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Что я делаю не так?
Не занимаетесь отладкой своей программы. Если не умеете пользоваться отладчиком, то возьмите лист бумаги, карандаш, и пошагово пройдите всю свою программу.
Если таки ничего не поможет
node->value на первом же элементе равняется нулю, соответственно отрабатывает последняя ветка условия и возвращает false.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
СиСорт Барнаул
от 40 000 до 90 000 руб.
AI Factory Санкт-Петербург
от 125 000 до 250 000 руб.