Удалить нечетные номера в списке C - PullRequest
0 голосов
/ 16 мая 2018

Мне нужна помощь для списка и узлов в C. Я определил их как struct, как показано в файле .h:

typedef struct node{

     int value;
     struct node*prox;

 }node;

 typedef Nodo *list;

Я не могу понять, почему не работает функция удаления всех нечетных чисел. Программа просто падает. Где я делаю не так?

list delete_odd_numbers(list l){

   node*temp;
   node*current;
   node*prev;

   if(l->value%2!=0){         

        temp=l;
    l=l->prox;
    free(temp);

   }else{

       prev=NULL;
       current=l;
       while(current!=NULL){

           if(current!=NULL &&current->value%2!=0){

               temp=current;
               prev->prox=current->prox;
               free(temp);

           }else{

           prev=current;
           current=current->prox;

           }
       }

   }
   return l;

}

1 Ответ

0 голосов
/ 16 мая 2018

знаете ли вы, как использовать отладчик и шагать по коду, просматривая значения переменных? В любом случае, в большом операторе «else» вы инициализируете prev = NULL, а затем, далее, вы ссылаетесь на prev-> prox - поэтому вы разыменовываете нулевой указатель

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...