Ciao,

sto provando a fare il seguente esercizio:
codice:
- Sia data una lista concatenata semplice L di interi. Scrivere una o piu' funzioni, descrivendone sempre pre e post-condizione, che data L e un puntatore p ad un elemento della lista, produca in stampa su schermo:

1) tutti gli elementi dall’elemento puntato da p alla fine della lista in ordine inverso
2) tutti gli elementi dalla testa della lista all’elemento precedente quello puntato da p sempre in ordine inverso

Esempio:
Sia L la lista 2->4->1->7->20->3->5->9->NULL e supponiamo che p punti all’elemento 20.
Output: 9,5,3,20,7,1,4,2.
Mi sto concentrando sul punto1 (tanto il 2o è uguale...) e ho pensato al seguente codice:

codice:
void p1 (list *p)
{
  if (p == NULL)
   return;
  else
   p1(p->next);

  printf("%i,p->d);

}
Fatta cosi ricorsivamente va bene??
Non mancherà un return dopo il printf? (questo è il grande dubbio)
Secondo me no.


Grazie