typedef struct volo { char nome[20]; char cognome[20]; char data[16]; char codice[10]; int classe; // 1=first, 2=business, 3=economy char posto[4]; struct volo *succ; // puntatore all'elemento successivo } t_volo;
t_volo *ultimo(t_volo *l) { t_volo *prossimo = NULL; if (l != NULL) { prossimo = l; while(prossimo->succ != NULL) { prossimo = prossimo->succ; } } return prossimo; }
t_volo *nuovovolo(char *nome, char *cognome, int classe) { t_volo *v1 = (t_volo *) malloc(sizeof(t_volo)); strcpy(v1->cognome,nome); strcpy(v1->nome,cognome); /* strcpy(v1->posto,"5b"); strcpy(v1->data,"data"); strcpy(v1->codice,"codice"); */ v1->classe = classe; return v1; }
void addvolo(t_volo *l, char *nome, char *cognome, int classe) { t_volo *v1 = (t_volo *) malloc(sizeof(t_volo)); strcpy(v1->cognome,nome); strcpy(v1->nome,cognome); /* strcpy(v1->posto,"5b"); strcpy(v1->data,"data"); strcpy(v1->codice,"codice"); */ v1->classe = classe; t_volo *ultimo = last(l); ultimo->succ = v1; //return v1; }
void stampa(t_volo *l) { if (l != NULL) { t_volo *p = l; while (p != NULL) { printf("nome %s, cognome %s\n", p->nome, p->cognome); p = p->succ; } } }
void remove(t_volo *l, char *nome, char *cognome) { t_volo *prec = NULL; t_volo *prossimo = l; if (l != NULL) { int b = 0; while((prossimo != NULL) && (b == 0)) { if ((strcmp(prossimo->nome, nome) == 0) && (strcmp(prossimo->cognome, nome) == 0)) { b = 1; } else { prec = prossimo; prossimo = prossimo->succ; } } if (b == 1) { if (prec != NULL) prec->succ = prossimo->succ; else l = prossimo->succ; free(prossimo); } } }