PDA

Visualizza la versione completa : [C] Cancellazione elementi lista


Il-predestinato
15-06-2010, 10:09
Vorrei sapere , se ho una lista di elementi fatti così :


typedef struct Structure {
int Data;
struct Structure *Next;
}Element;
E di queste strutture ne ho allocate 10,
come faccio poi a svuotare l'intera lista ?

Grazie a tutti

Ippo343
15-06-2010, 10:31
Le hai allocate come? E' una lista o un vettore?

Il-predestinato
15-06-2010, 10:53
Originariamente inviato da Ippo343
Le hai allocate come? E' una lista o un vettore?

Le ho allocate con la malloc, è una lista...

oregon
15-06-2010, 10:53
Devi deallocare lo spazio allocato ... usi la free.

Il-predestinato
15-06-2010, 13:55
Basati su questo : (Fatto da me)


#include <stdio.h>
#include <stdlib.h>

typedef struct Structure {
int Data;
struct Structure *Next;
}Element;

Element *AddElements ();

Element *ViewElements (Element *List);

int main ()
{
Element *List;
AddElements ();
system ("CLS");
ViewElements (List);
system ("PAUSE");
return 0;
}

Element *AddElements ()
{
Element *List = NULL;
Element *Pointer;
int Elements;
int i;
printf ("Elementi della lista : ");
scanf ("%i", & Elements);
if (Elements == 0)
{
List = NULL;
}else{
List = (Element *)malloc(sizeof(Element));
printf ("Inserisci il 1 elemento : ");
scanf ("%i", & List -> Data);
Pointer = List;
for (i = 0 ; i < Elements - 1 ; i++)
{
Pointer -> Next = (Element *)malloc(sizeof(Element));
Pointer = Pointer -> Next;
printf ("Inserisci il %i elemento : ", i + 2);
scanf ("%i", & Pointer -> Data);
}
Pointer -> Next = NULL;
}
return List;
}

Element *ViewElements (Element *List)
{
printf ("Lista :\n\n");
while (List != NULL)
{
printf ("%i -----> ", List -> Data);
}
printf ("NULL\n\n");
}
Come faccio a svuotare questa benedetta lista ?

oregon
15-06-2010, 14:23
Te l'ho già detto ... prendi tutti i benedetti puntatori diversi da NULL, dall'ultimo al primo, e li usi con la benedetta free per deallocare la memoria.

Il-predestinato
16-06-2010, 13:53
Ok :ciauz:

Loading