Ciao! Mi trovo ad implementare (a scopo puramente accademico) una lista tramite array collegati. Ho trovato in giro il seguente codice:
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;
}
Ad ogni inserimento la funzione mi sovrascrive il primo elemento.
Sospetto che l'errore stia da queste parti:
codice:
freeHead=key[freeHead].next;
Ma non riesco ad uscire fuori dal tunnel! Qualcuno ha qualche idea (oltre al suggerimento di usare lista concatenate) ?
Plz!