ok, ora funziona, graszie di tutto.
Un ultima cosa....per cancellare ricorsivamente tutti gli elementi da una lista e metterli in un altra lista (l' ordine non importa), jo provato ad utilizzare questo codice
codice:
k=testacoda;
if(scancoda->succ)
{
scancoda=testacoda->succ;
testacoda=scancoda;
if (testacancella==NULL) {
ncancella=malloc (sizeof (struct FREELIST));
ncancella->x=k->x;
ncancella->y=k->y;
ncancella->succ=NULL;
testacancella=ncancella;
codacancella=ncancella; }
else {
ncancella=malloc (sizeof (struct FREELIST));
ncancella->x=k->x;
ncancella->y=k->y;
ncancella->succ=NULL;
codacancella->succ=ncancella;
codacancella=ncancella;
}
free(k);
}
else {
testacoda=NULL;
}
solo che in questo modo l' ultimo elemento non me lo leva dalla coda.
Ho provato questo, modificando la prima parte:
codice:
k=testacoda;
if(testacoda)
{
if (testacoda->succ) {
scancoda=testacoda->succ;
testacoda=scancoda;
}
....
ma mi da errore, probabilmente perchè vado a leggere da puntatori che non esistono