Definire una procedura LastFirst che, data una semplice lista di interi, porta in prima posizione l'ultimo elemento.
Ipotizzando questa struttura dati

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)