Originariamente inviato da Laikius91
Niente di sbagliato, ma quella che hai definito tu non è una lista ma una coda (politica FIFO -> First In First Out), caratterizzata dal fatto che si passano sia il puntatore al primo elemento sia il puntatore all'ultimo.
In genere le liste sono così definite:
codice:
typedef int element; \* in questo caso definisco una lista di interi *\
typedef struct node {element value; struct node* next;} node;
typedef node* list;
p.s. Ragazzi io ho l'esame di fondamenti d'informatica T1 sul C proprio domani
in realtà una coda è una sottocategoria di lista (se implementata tramite puntatori)
Tutta l'interfaccia che caratterizza quel mio header infatti lavora sulle liste:
codice:
typedef enum{LSuccess, LParametersError, LMemoryError} listError;
lista_t* initList();
listError deleteList(lista_t* list);
listError insertHead(lista_t* list, item_t* oggetto);
listError insertTail(lista_t* list, item_t* oggetto);
listError insertPos(lista_t* list, item_t* obj, int position);
listError deletePos(lista_t* list, int position);
listError printList(lista_t* list);
listError getNodeFromPosition(lista_t* list, int position, node_t* returned);
listError toArray(lista_t* list, item_t*** arrayReturned, int *nelementi);
int getDimension(lista_t* list);
listError getNext(node_t* actual, node_t* returned);
boolean hasNext(node_t* actual);
l'aggiunta del puntatore a coda non fa altro che semplificare e ottimizzare alcuni algoritmi (per esempio l'inserimento diretto in coda e alcuni casi particolari delle altre funzioni). Da nessuna parte è specificato che si debba usare una politica FIFO, ma se uno vuole può adottare il mio list.c per gestire una fifo o una lifo con la massima semplciità
distinguiamo un possibile uso da un uso obbligatorio
Anzi, se ai tempi la avessi implementata come lista doppiamente linkata probabilmente sarebbe stato ancora meglio