Member 13194385 Ответов: 2

Я пытаюсь написать функцию, которая удаляет все нечетные элементы из данного связанного списка


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

Вот что я сделал на сегодняшний день:

Что я уже пробовал:

typedef struct list{
      int data;
      struct  list* next;
} List;

List* removeOddValues(List **source){
    List *curr = *source;
    List even = { .next = NULL };
    List *e_curr = &even;
    List odd  = { .next = NULL };
    List *o_curr = &odd;

    while(curr){
        List *next = curr->next;
        curr->next = NULL;

        if(curr->data % 2)// != 0, odd
            o_curr = o_curr->next = curr;//node add to last
        else//even
            e_curr = e_curr->next = curr;

        curr = next;
    }
    *source= even.next;//update source
    return odd.next;
}

jeron1

Есть ли конкретный вопрос? Неужели код делает что-то такое, чего вы не ожидали?

Member 13194385

Как мне улучшить свой код или использовать меньше переменных?

2 Ответов

Рейтинг:
2

Patrice T

Когда вы не понимаете, что делает ваш код или почему он делает то, что делает, ответ таков: отладчик.
Используйте отладчик, чтобы увидеть, что делает ваш код. Просто установите точку останова и посмотрите, как работает ваш код, отладчик позволяет вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения, это невероятный инструмент обучения.

Отладчик-Википедия, свободная энциклопедия[^]

Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
Базовая отладка с помощью Visual Studio 2010-YouTube[^]
Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.


Рейтинг:
0

W∴ Balboos, GHB

Домашнее задание.

Она дана вам, чтобы научить вас многим вещам.
1) Как делать вещи
2) Как научить себя что-то делать

Например, отладчик, чтобы увидеть, что происходит не так.
Отладчик-великий учитель.