У меня есть некоторые проблемы с функцией удаления хвоста, она не работает, когда я освобождаю текущий узел, но когда я работаю со следующим узлом, все работает нормально. Может кто-нибудь объяснить мне, что происходит и почему это не работает?
это список
typedef struct node {
int codice;
struct node *next;
} nodo;
typedef nodo * lista;
функция удаления хвоста, которая не работает:
lista rimuovi_in_coda(lista l){
if(l == NULL) return NULL;
lista l_scorri = l;
while(l_scorri->next != NULL)
l_scorri = l_scorri->next;
free(l_scorri);
l_scorri = NULL;
return l;
}
в этом списке список не изменен:
input: 0, 4
output: 0, 4
рабочий:
lista rimuovi_in_coda(lista l){
if(l == NULL || l->next == NULL) {
free(l);
return NULL;
}
lista l_scorri = l;
while(l_scorri->next->next != NULL)
l_scorri = l_scorri->next;
free(l_scorri->next);
l_scorri->next = NULL;
return l;
}
в этом списке возвращается, как и ожидалось
input: 0, 4
output: 0