00001 /* Tennis Tournament Management System 2005 by Silvio Moioli 00002 and Davide Gottini (moio@tiscali.it, davide.gottini@virgilio.it). */ 00003 #include "liste.h" 00004 00005 /* Per i commenti sulle funzioni pubbliche e i loro i parametri (che sono 00006 stati eliminati per evitare inutili duplicazioni e spreco di spazio) 00007 si rimanda all'header della libreria. */ 00008 00009 Lista* listeCreaLista(const void* primo){ 00010 Lista* list = new Lista; 00011 00012 if (primo == NULL){ 00013 list->testa = NULL; 00014 list->coda = NULL; 00015 list->n = 0; 00016 } 00017 else { 00018 list->testa = new ElemLista; 00019 list->coda = list->testa; 00020 list->n = 1; 00021 list->testa->elemento = primo; 00022 list->testa->prossimo = NULL; 00023 } 00024 return list; 00025 } 00026 00027 void listeDistruggiLista(Lista* l){ 00028 if (l->n != 0){ 00029 ElemLista* attuale = l->testa; 00030 ElemLista* prossimo; 00031 while (attuale != NULL){ 00032 prossimo = attuale->prossimo; 00033 delete attuale; 00034 attuale = prossimo; 00035 } 00036 } 00037 delete l; 00038 } 00039 00040 void listeAggiungiElemento(Lista* l, const void* elemento){ 00041 if (l->n == 0){ 00042 l->testa = new ElemLista; 00043 l->testa->elemento = elemento; 00044 l->testa->prossimo = NULL; 00045 l->coda = l->testa; 00046 } 00047 else { 00048 ElemLista* nuovo = new ElemLista; 00049 l->coda->prossimo = nuovo; 00050 nuovo->elemento = elemento; 00051 nuovo->prossimo = NULL; 00052 l->coda = nuovo; 00053 } 00054 l->n++; 00055 } 00056 00057 const void* listeLeggiElemento(Lista* l, int i){ 00058 ElemLista* supp = l->testa; 00059 for (int j = 0; j < i; j++){ 00060 supp = supp->prossimo; 00061 } 00062 return supp->elemento; 00063 } 00064 00065 void listeScriviElemento(Lista* l, int i, const void* elemento){ 00066 ElemLista* supp = l->testa; 00067 for (int j = 0; j < i; j++){ 00068 supp = supp->prossimo; 00069 } 00070 supp->elemento = elemento; 00071 }