Salve a tutti, sto frequentando il corso di fondamenti di informatica e abbiamo da poco introdotto le liste. Da quanto ho capito ci sono due modi per implementarle, tramite array o tramite puntatori. Nel secondo caso otterremmo una lista linkata, sfruttando la memoria dinamica.
Ora avrei bisogno di un aiuto nel "decifrare" la rappresentazione in c di una generica lista. Le slide del professore non mostrano l'intero codice ma soltanto i blocchi relativi alla lista. I blocchi in questione sono questi:
codice:
typedef int E;
struct Record;
typedef Record *L;
struct Record{
E elem;
L next; };
codice:
L push(L l, E e){
L q;
q =(L)malloc(sizeof(Record));
q->elem=e;
q->next=l;
return(q);
}
codice:
L insert(L l,E e) {
L q=l, prec; int PosTrovata=0;
if (q==NULL) {
q=push(l,e);
return(q);
}
if (e <= q->elem) {
q=push(l,e);
return(q);
}
prec=q;
while ((q->next!=NULL) && (PosTrovata== 0)) {
if (e > q->next->elem) { prec=q; q= q->next; }
else PosTrovata=1;
}
prec->next=push(q->next,e);
return(l);
}
Ora avrei alcune domande:
1) Perche definisce un tipo di dato int E? E' comunque un tipo di dato intero che bisogno cè di definirlo?
2)Perche definisce un tipo Record *L? Non dovrebbe scrivere: struct Record *next?
3)Cosa rappresenta il parametro l? E la variabile q può essere considerato un puntatore temporaneo, giusto?
4)Per inserire effettivamente i dati nella lista, cosa devo scrivere all'interno del main?
Ringrazio tutti in anticipo.