Я пытаюсь вернуть первый узел, содержащий значение элемента или вернуть NULL, если ничего не найдено - PullRequest
0 голосов
/ 26 мая 2019

Я пытаюсь вернуть первый узел, содержащий элемент значения, или вернуть NULL, если ничего не найдено. Я написал 2 логики, которые, по моему мнению, одинаковы. Но почему я получаю неправильный вывод в одном из них.

//THIS IS GIVING ME THE CORRECT OUTPUT
struct nodeStruct* List_findNode(struct nodeStruct *head, int item){

    struct nodeStruct *temp_node=head;

    while (temp_node!=NULL)
    {
        if (temp_node->item == item)
        {
            return temp_node;     

        }
        temp_node=temp_node->next;  

    }
    return NULL;
}

//BUT ACCORDING ME THIS IS THE SAME LOGIC BUT IT'S GIVING WRONG OUTPUT.
struct nodeStruct* List_findNode(struct nodeStruct *head, int item){

    struct nodeStruct *temp_node=head;

    while (temp_node!=NULL)
    {
        if (temp_node->item != item)
        {

            temp_node=temp_node->next;


        }
        return temp_node;  

    }
    return NULL;
}

1 Ответ

2 голосов
/ 26 мая 2019

В последнем случае вам нужно продолжить или ваша функция всегда будет возвращать

while (temp_node!=NULL)
{
    if (temp_node->item != item)
    {

        temp_node=temp_node->next;
        continue; // here
    }
    return temp_node;  
}

Тем не менее, вы также можете использовать цикл for:

struct nodeStruct* List_findNode(struct nodeStruct *head, int item) {
    for (struct nodeStruct *temp_node = head;
         temp_node != NULL;
         temp_node = temp_node->next) {
        if (temp_node->item == item) {
            return temp_node;
        }
    }
    return NULL;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...