









Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Una panoramica sui tipi di dati e le strutture dati dinamiche, con particolare focus sulle liste e sui puntatori. Vengono introdotti i concetti di tipo di dato primitivo, dati strutturati (array, struct), tda o adt, variabili statiche e dinamiche, allocazione statica e dinamica della memoria, il problema del memory overflow e il ciclo di allocazione e deallocazione. Viene poi approfondito il concetto di puntatore, come tipo di variabile che contiene un indirizzo, e viene mostrato un esempio di utilizzo. Infine, viene presentata la struttura dati della lista, come struttura dinamica che permette la modifica del numero di elementi in fase di esecuzione mantenendo un numero di puntatori statico.
Tipologia: Slide
1 / 17
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!










Il problema è definire una struttura dati che sia «effettivamente dinamica» Deve permettere la modifica in fase di esecuzione degli elementi mantenendo costante il numero di puntatori
tipo di variabile che contiene un indirizzo int *pi; // dichiaro un puntatore a un tipo int &num (operatore indirizzo applicato alla variabile num) Ogni variabile ha Nome : num Tipo :int Valore : Indirizzo : A
#include
int main() {vettura *testa; int scelta; vettura *p; testa=NULL; // INIZIALIZZAZIONE DELLA PILA A VUOTO do { // gestione di una pila o stack (LIFO) cout<<"1.insersci auto (push) \n"; cout<<"2.elimina auto (pop )\n"; cout<<"3.stampa elenco auto presenti nel garage\n"; cout<<"0.esci\n"; cout<<"fai una scelta\n"; cin>>scelta; switch(scelta) { case 1: p=new(vettura); // creo un nuovo elemento cout<<"numero di targa\n"; cin>>p->targa; // inserisco i dati cout<<"cilindrata\n"; cin>>p->cil; p->next=testa; // aggiorna il puntatore testa=p; // all'inizio della pila break;
case 3: if( testa==NULL) cout<<"non ci sono autovetture disponibili\n"; else { cout<<"ELENCO AUTOVETTURE DISPONIBILI\n"; for (p=testa; p!=NULL;p=p->next ) // per visualizzare la pila si posiziona sul primo e scorre la lista { cout<<p->targa<<"\t\t"<<p->cil<<endl; } } break; } } while (scelta|=0); }
Struttura dati dinamica che permetta in fase di esecuzione la modifica del numero di elementi e mantenga un numero di puntatori statico La variabili sono in numero non noto a priori mentre il numero di puntatori deve essere noto