/* PROVA D'ESAME 23-02-2022 */ #include #include using namespace std; // STRUTTURE struct elem{ char tipoAlbero[31]; elem* pun; }; struct Bosco{ elem** vettFile; int quanteFile; }; // FUNZIONI TESTO void InizializzaBosco(Bosco& b, int n){ if (n<=0){ n=1; } b.quanteFile=n; b.vettFile = new elem* [b.quanteFile]; for(int i=0; i30 || i<=0 || i>b.quanteFile){ return; } i--; // se la fila รจ vuota inserisco il primo albero if(b.vettFile[i]==NULL){ elem* r = new elem; strcpy(r->tipoAlbero, s); r->pun = NULL; b.vettFile[i] = r; k--; } // posiziono q sull'ultimo albero della fila elem* q = b.vettFile[i]; while(q->pun !=NULL){ q = q->pun; } // inserisco i rimanenti alberi in fondo for(int i=0; ipun = new elem; // punta ad un nuovo elemento q = q->pun; // mi sposto su quell'elemento strcpy(q->tipoAlbero, s); q->pun = NULL; } } bool eliminaAlbero_vecchio(Bosco& b, char* s, int i){ if(i<=0 || i > b.quanteFile || strlen(s)>30){ return false; } i--; if(b.vettFile[i] == NULL){ return false; } elem* q = b.vettFile[i]; elem* p; while(q!= NULL && strcmp(q->tipoAlbero, s)!=0){ p = q; q = q->pun; } if(q!=NULL){ // ho trovato l'albero s if(q==b.vettFile[i]){ b.vettFile[i] = b.vettFile[i]->pun; }else{ p->pun = q->pun; } delete q; return true; } return false; } void stampaBosco(const Bosco& b){ for(int i=0; ipun){ cout << q->tipoAlbero; if(q->pun != NULL){ cout << ", "; } } cout << endl; } }