Esercitazioni di Prog. II (esercizi _aggiuntivi_su alberi binari)

Slides:



Advertisements
Presentazioni simili
Funzioni In C++ le funzioni sono caratterizzate da un nome, dal tipo della variabile ritornata e da una lista di parametri (opzionali) La lista dei parametri.
Advertisements

Uso avanzato di C.
Ricorsione Procedure e funzioni ricorsive. Definizioni Un oggetto si dice ricorsivo se è definito totalmente o parzialmente in termini di sé stesso La.
Algoritmi Avanzati Grafi e Alberi
Lez. 91 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Alberi di ricerca.
Anno accademico Array e puntatori in C.
La ricorsione Simulazione. Il Main /* Programma che usa una funzione ricorsiva*/ #include #define MAX_N 8 main() int valore, dato; printf(Introduci n:
Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a – 3° ciclo.
STRUTTURE DATI e LABORATORIO II ESERCITAZIONE N°13 Heap massimo.
Esercizi su alberi binari
Tail recursion: esempio
Alberi binari Definizione della struttura dati: struct tree { };
Esercizi su alberi binari di ricerca
Corso di Fondamenti di programmazione a.a.2009/2010
Esercizi su strutture dinamiche Fondamenti di Programmazione Canale AD a.a. 2009/2010.
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di Programmazione a.a.2009/2010 Prof.ssa Chiara Petrioli Corso.
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2007/2008 Corso di Programmazione 1 a.a.2007/2008 Prof.ssa Chiara Petrioli Corso di Laurea.
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Corso di Programmazione 1 a.a.2007/2008 Prof.ssa Chiara Petrioli Corso di Laurea.
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Corso di Programmazione 1 a.a.2006/2007 Prof.ssa Chiara Petrioli Corso di Laurea.
Laboratorio di Linguaggi lezione VI: puntatori 2/3 Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso.
Laboratorio di Linguaggi lezione V Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea in.
Laboratorio di Linguaggi lezione VII: puntatori 3/3 Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso.
CORSO DI PROGRAMMAZIONE II Operazioni su alberi ordinati e non
APPUNTI SUL LINGUAGGIO C
Albero: insieme di punti chiamati NODI e linee chiamate EDGES
Modello dati ALBERO Albero: Albero: insieme di punti chiamati NODI e linee chiamate EDGES EDGE: linea che unisce due nodi distinti Radice (root): in una.
Modello dati ALBERO Albero: Albero: insieme di punti chiamati NODI e linee chiamate EDGES EDGE: linea che unisce due nodi distinti Radice (root): in una.
Esercizi su pile Scrivere una funzione che restituisca una nuova pila che contiene i valori di una pila in ingresso in ordine inverso. La pila originale.
Esercizi su alberi binari
Esercizi Puntatori, struct con campi puntatore, puntatori a struct, rapporto tra array e puntatori. FUNZIONI Passaggio di parametri per indirizzo, passaggio.
Le liste dinamiche La ricorsione
Sorting: MERGESORT Vogliamo ordinare lista (a 1,…,a n ). 1.Dividi lista in 2 sottoliste aventi (quasi) la stessa dimensione: (a 1,a 3,a 5,…) e (a 2,a 4,…),
1.Scrivere una funzione per cercare un numero x in una lista circolare di interi. La funzione deve restituire NULL se il numero non esiste. 2.Scrivere.
1 ListaDiElem Cancella( ListaDiElem lista, TipoElemento elem ) { ListaDiElem puntTemp; if( ! ListaVuota(lista) ) if( lista–>info == elem ) { puntTemp =
void binario(int n); …………………
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2007/2008 Corso di Programmazione 1 a.a.2007/2008 Prof.ssa Chiara Petrioli Corso di Laurea.
Esercizi Liste.
Grafi Rappresentazione mediante liste di adiacenza:
Tail recursion: esempio
Esercizi La distanza di hamming tra due interi x e y si definisce come il numero di posizioni nella rappresentazione binaria di x e y aventi bit differenti.
Esercizi su alberi binari di ricerca
Alberi binari Definizione della struttura dati: struct tree { };
Corso di Informatica 2 a.a. 2003/04 Lezione 6
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Corso di Programmazione 1 a.a.2006/2007 Prof.ssa Chiara Petrioli Corso di Laurea.
Sintassi: Programma e classi Program::=prog {ClassDeclList {StatList}} ClassDeclList::=ClassDecl ClassDeclList |  ClassDecl::=class Ide c [StaticMetDefList]
alberi completamente sbilanciati
Alberi Alberi radicati : alberi liberi in cui un vertice è stato scelto come radice. Alberi liberi : grafi non orientati connessi e senza cicli. Alberi.
Informatica 4 Funzioni. FUNZIONE: definizione MATEMATICA Relazione (o applicazione) binaria tra due insiemi A e B che associa a ogni elemento di A un.
Capitolo 8 Code con priorità Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Prog2 a.a. 2001/ Albero binario di ricerca Un albero binario di ricerca é un albero binario in cui ogni nodo ha un’etichetta.
APPUNTI SUL LINGUAGGIO C
Corso di Algoritmi e Strutture Dati APPUNTI SUL LINGUAGGIO C Esercizi su Alberi.
13. Strutture dati dinamiche Ing. Simona Colucci Informatica - CDL in Ingegneria Industriale- A.A
Prog21 Alberi binari (radicati e ordinati) Il figlio destro della radice La radice Il figlio sinistro della radice Il padre del nodo 5.
Alberi. Gli alberi sono una generalizzazione delle liste che consente di modellare delle strutture gerarchiche come questa: Largo Fosco Dora Drogo Dudo.
Esercitazioni di Prog. II (esercizi su alberi ennari)
Le postcondizioni specificano l’output della funzione.
Alberi n-ary Lezioni di C.
Gestione di un banco di magliette
Gestione di un ristorante
APPUNTI SUL LINGUAGGIO C
esercizi alberi binari
comprensione e modifica di codice
APPUNTI SUL LINGUAGGIO C Implementazioni di Liste Concatenate
comprensione e modifica di codice
LINGUAGGIO C Alberi e livelli
APPUNTI SUL LINGUAGGIO C Alberi Binari – primi esercizi
Esercizio Dato un albero binario, definiamo altezza minimale di un nodo v la minima distanza di v da una delle foglie del suo sottoalbero, definiamo invece.
Verifica bilanciamento nel numero dei nodi: definizioni.
concetti ed applicazioni
Transcript della presentazione:

Esercitazioni di Prog. II (esercizi _aggiuntivi_su alberi binari) Chiara Petrioli

Si scriva una procedura Essere ‘giallo-verde’ Esercizio 8 /*Verifica se un albero e’ giallo verde. Per essere gialloverde ogni nodo giallo deve avere figli Verdi. Un nodo giallo ha il campo elem a 1 , un nodo Verde il campo elem a 0.*/ int gialloverde (ALBERO T) { int gv=1; if(T==NULL) return 1; else { if (T->elem==0) return (gialloverde(T->left)&&(gialloverde(T->right))); if (T->left!=NULL) gv=(T->left->elem==0); if(T->right!=NULL) gv=gv&&(T->right->elem==0); return(gv&&gialloverde(T->left)&&gialloverde(T->right))); } Si scriva una procedura Che dato un Albero binario Verifica se ha La proprieta’ di Essere ‘giallo-verde’ Qui farli ragionare un attimo sull’aritmetica dei puntatori

Si scriva una procedura Esercizio 9 /*calcola e memorizza nella locazione di memoria puntata da order l’iesimo order statistic ovvero l’i-esimo elemento piu’ piccolo in un albero binario di ricerca. L’indice dell’elemento piu’ piccolo da cercare e’inizialmente memorizzato nella posizione di memoria puntata da i*/ void orderstatistic(ALBERO T,int *i,int *order) { if (T!=NULL) if (T->left) orderstatistic(T->left,i,order); if (*i==1) *order=T->elem; return; } * i= * i-1; If((*i>0)&&(T->right)) orderstatistic(T->right,i,order); Si scriva una procedura che dato un albero binario di ricerca calcoli l’i-esimo order statistic Qui farli ragionare un attimo sull’aritmetica dei puntatori

Si scriva una procedura Esercizio 10 /*Post:verifica se un albero binario e’ un albero binario di ricerca*/ struct max_min { int max; int min; }; typedef struct max_min MAXMIN; typedef MAXMIN* MAX_MINPTR; struct risposta int binricerca; MAX_MINPTR maxmin; } typedef struct risposta RISPOSTA; typedef RISPOSTA * RISPOSTAPTR; Si scriva una procedura Che dato un Albero binario Verifichi che sia Un albero binario Di ricerca Qui farli ragionare un attimo sull’aritmetica dei puntatori

Si scriva una procedura Esercizio 10 RISPOSTAPTR verificabinricerca (ALBERO T) { RISPOSTAPTR temp,temp1,temp2; int t1,t2; ALBERO temp; if (T==NULL) temp=malloc(sizeof(RISPOSTA)); temp->binricerca=1; temp->maxmin=NULL; return temp; } Si scriva una procedura Che dato un Albero binario Verifichi che sia Un albero binario Di ricerca Qui farli ragionare un attimo sull’aritmetica dei puntatori

Esercizio 10bis { temp1=verificabinricerca(T->left); else { temp1=verificabinricerca(T->left); temp2=verificabinricerca(T->right); temp=malloc(sizeof(RISPOSTA)); t1=((temp1->maxmin==NULL)||(temp1->maxmin->max<=T->elem)); t2=((temp2->maxmin==NULL)||(temp2->maxmin->min>=T->elem)); temp->binricerca=temp1->binricerca && temp2->binricerca &&t1 &&t2; temp->maxmin=malloc(sizeof(MAXMIN)); temp->maxmin->max=T->elem; temp->maxmin->min=T->elem; if ((T->left)&&(temp1->maxmin->max>T->elem)) temp->maxmin->max=temp1->maxmin->max; if ((T->right)&&(temp2->maxmin->max > temp->maxmin->max)) temp->maxmin->max=temp2->maxmin->max; if ((T->left)&&(temp1->maxmin->min<T->elem)) temp->maxmin->min=temp1->maxmin->min; if ((T->right)&&(temp2->maxmin->min < temp->maxmin->min)) temp->maxmin->min=temp2->maxmin->min; return temp; } Qui farli ragionare un attimo sull’aritmetica dei puntatori