Il nome della funzione mi viene dato e quindi procedo subito con lo scriverla:
list split_list(list l, node n)
Secondo e terzo rigo, scrive:
list new = malloc(sizeof(struct_list));
if(!new) return NULL;
viene allocata una lista nuova, cioè list new e viene allocata con dimensione pari alla struttura list.
Viene aggiunto una condizione base che è l'if e impone che se non si ha la nuova lista, allora deve ritornare NULL.
Quarto e quinto rigo, scrive:
new -> first = n;
new -> last = l -> last;
dice che la nuova lista parte dalla nodo n specificato come parametro
dice anche che la nuova lista termina con l come ultimo parametro.
Sesto rigo, scrive:
l-> last = n -> prev
dice che l deve essere l'ultimo e n deve essere il precedente.
Settimo rigo in poi, scrive:
if(!l -> last)
l->fisrt = NULL;
else{
n->prev->next= NULL;
n->prev=NULL;
}
return 1;
}
dice che se l non è l'ultimo, allora l che è il primo deve essere NULLO, altrimenti n che punta al precedente e al successivo come NULLO, verrà eliminato il successivo e quindi n che punta al precedente sarà NULLO.
E poi deve sempre ritornare 1, sia se è verificato if che se è verificato else.
Ho tradotto correttamente