Ragazzi vorrei rivolgere la vostra attenzione su questo programma C ke utilizza le liste...

//Si definisca la struttura dati CharElem per realizzare 1 lista doppiamente concatenata i cui elementi sono caratteri. Si scriva poi una funzione che, presi due puntatori C e D a CharElem, rappresentanti due liste di caratteri aventi la stessa lunghezza, restituisca la stringa ottenuta concatenando in maniera alternata un carattere preso da C e uno da D. In particolare, C deve essere scandita dal primo elemento all'ultimo mentre D dall'ultimo elemento al primo.

X esempio, se
C a--b--c--d
D e--f--g--h
la stringa risultante deve essere ahbgcfde

Io lo realizzato cosi'

Typedef struct dat
{
char a;
struct dati *p,*d;
} charelem;

char *primoc=null, *ultimod=null;

char *funzione (charelem *c, charelem *d)
{

char *stringa; unsigned i;
i=0;
for(c=primoc;c;c=c-)d)
{
*(stringa+i)=c-)a;
i+=2;
}
i=1;
for(d=ultimod;d;d=d-)p)
{
*(stringa+i)=d-)a;
i+=2;
}
return stringa;
}
}

scusate la poca leggibilita'....mi piacerebbe discutere in maniera principale della logica con cui dovrebbe essere realizzato un programma simile...