PDA

View Full Version : [C]


JErikaM
04-01-2012, 15:31
Salve a tutti!
Sono qui ad esporre un altro problema :S
Creazione di un array di liste, per poi potervi fare al suo interno operazioni varie come la ricerca di un valore...

non ho trovato molto materiale sull'argomento array di liste, quindi durante l'implementazione sto riscontrando diversi problemi!


struct cella
{
int valore;
struct cella *next;
};

int main()
{
struct cella *temp;
struct cella *nuovo;
struct cella *testa;
int i;
struct cella *array[3];
for(i=0;i<3;i++)
{
array[i]=NULL;
}

printf("Inserisco gli elementi nella lista 1");
printf("\n");
nuovo = (struct cella*)malloc(sizeof(struct cella)); //ho allocato lo spazio in memoria per la prima cella della lista
nuovo->next = testa;
testa = nuovo;

nuovo = array[0];
//associo a nuovo l'indice 0 dell'array e gli inserisco il valore
scanf("%d", &array[0]->valore);

array[0]->next = array[0]; //sono incerta cosa mettere, sicuramente il passaggio errato è questo (speriamo sia solo questo!)
}

teoricamente a questo punto avrei dovuto avere la possibilità di creare la lista che ha la testa nella cella 0 dell'array e di inserirvi un elemento!
ma non mi si compila, si chiude l'exe dopo poco e da errore!!
sapete aiutarmi?^^

grazie in anticipo!

ndakota
04-01-2012, 17:27
Fai una cosa. Non pensare "array di liste". Concentrati su implementare correttamente una struttura dati lista. Poi il passaggio dovrebbe essere indolore.

starfred
06-01-2012, 09:09
Ciao, ci sono un paio di errorucci:

1) Quando fai "nuovo->next = testa;" testa non è stato inizializzato. Quindi prima ci va testa=NULL;

2) nuovo = array[0]; oltre ad perdere il riferimento all'oggetto allocato non ha molto senso, credo che tu volessi scrivere array[0]= nuovo; o, anche se è la stessa cosa, è più corretto scrivere array[0]=testa;

3) fai la scanf su array[0] ovvero su un puntatore a NULL...

4) array[0]->next = array[0]; :confused: Follia? :D

Credo che, come ha già suggerito ndakota, devi iniziare con una semplice lista, anzi... da una semplice struct.

Ciao