Ipotizzando questa struttura dati
Definire una procedura LastFirst che, data una semplice lista di interi, porta in prima posizione l'ultimo elemento.
typedef struct nodo {
int value;
struct nodo *next;
} tipoNodo,*ptrLista;
Ecco la funzione :
tipoNodo *LastFirst(tipoNodo *ptrLista) {
tipoNodo *aux = ptrLista;
//Puntatore ausiliario di scorrimento
tipoNodo *last;
if (ptrLista == NULL)
return NULL;
while (aux->next != NULL) {
last = aux;
aux = aux->next;
}
//In questo punto Last punta al penultimo e Aux all'ultimo elemento
last->next = NULL; //Il penultimo diventa ultimo
aux ->next = ptrLista->next; //L'ex ultimo punta al secondo
ptrLista = aux; //La lista inizia dall'ex ultimo
return ptrLista;
}
Uhm...fatto al volo in cinque minuti, spero non ci siano errori...(sicuramente si può fare meglio)

Rispondi quotando