Originariamente inviato da Michele Facchin
Sinceramente da quello che ho capito il problema è questo:

NULL <--> A <--> B <--> C <--> D <--> E <--> F <--> G <--> H <--> NULL

Questa è la lista.

Io devo prendere due puntatori agli elementi di questa lista.

P1 e P2 che puntano rispettivamente a "B" e a "F", in più un numero che mi dica quanti elementi sucessivi devono avere.
Quindi il prototipo della funzione può essere tranquillamente:

codice:
char *f (CharElem *p1, CharElem *p2, int n);
Adesso basta che fai due controlli per vedere se per ogni puntatore, si possano acquisire gli n elementi sucessivi, cioè se n non superi il limite di elementi.
Poi scorri da una parte, scorri dall'altra..e concateni ogni carattere con la sua stringa rispettiva, cosi da crearne 2 diverse.
Poi rifai il procedimento per queste due, e ritorni la stringa.

Non mi ricordo se esiste una funzione per convertire da char a char *, ma mi pare di nò.
Comunque in questo modo dovrebbe funzionare lostesso:

codice:
sprintf (s, "%c", p1 -> elemento);
Dove s è una stringa (char *), mentre "p -> elemento" è un carattere (char) che naturalmente è il tipo di elemento contenuto nella tua lista.
1. In 1 lista il puntatore al primo elemento e' sempre necessario vero?

2. Scandendo dal primo all'ultimo basta controllare quando il valore dell'elemento e' NULL ma se controllo dall'ultimo al primo come faccio a terminare il ciclo dopo ke e' arrivato ha scandire il primo elemento?