Ciao! Mi trovo ad implementare (a scopo puramente accademico) una lista tramite array collegati. Ho trovato in giro il seguente codice:
Ad ogni inserimento la funzione mi sovrascrive il primo elemento.codice:#include <stdio.h> #include <stdlib.h> #define MAXLS 30 typedef struct elem { int elem; int next; } ArrLs; //VARIABILI GLOBALI ArrLs key[MAXLS]; //Array dati! int head=0; //Indice che "punta" al primo elemento della lista! int freeHead=0; //Indice che "punta" al primo el. della lista libera! void insEl(void) { int elem=0; int freeHeadbck=0; printf("Inserisci un integer > "); scanf("%d", &elem); if(freeHead==-1) { printf("Spazio in memoria insufficiente\n"); return; } freeHeadbck=freeHead; freeHead=key[freeHead].next; key[freeHeadbck].elem=elem; key[freeHeadbck].next=head; head=freeHeadbck; }
Sospetto che l'errore stia da queste parti:Ma non riesco ad uscire fuori dal tunnel! Qualcuno ha qualche idea (oltre al suggerimento di usare lista concatenate) ?codice:freeHead=key[freeHead].next;
Plz!
![]()

Rispondi quotando