15 maggio 2002 Avvisi: Ultima lezione: mercoledì 29 maggio II Esonero: mercoledì 5 giugno, ora da stabilire.

Slides:



Advertisements
Presentazioni simili
Puntatori Linguaggio C.
Advertisements

1 La Standard Template Library vettori, liste, mappe, …. find, replace, reverse, sort, …. puntatori intelligenti La libreria standard STL e una libreria.
Tipi di dato astratti Lista, Pila, Coda, Albero.
Estendere i linguaggi: i tipi di dato astratti
Strutture dati lineari
Fondamenti di Informatica I CDL in Ingegneria Elettronica - A.A CDL in Ingegneria Elettronica - A.A Strutture dati dinamiche.
Fondamenti di Informatica I CDL in Ingegneria Elettronica - A.A CDL in Ingegneria Elettronica - A.A Strutture dati dinamiche.
Fondamenti di Informatica Prof. Cantone
UD 3: “Le Liste” UD 4: “Pile e Code” UD 5: “Alberi e grafi”
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.
Algoritmi Avanzati Liste e Puntatori
Strutture dati elementari
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a – 3° ciclo.
Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a – 3° ciclo.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
1 FONDAMENTI DI INFORMATICA II Ingegneria Gestionale a.a ° Ciclo Liste.
STRUTTURE DATI e LABORATORIO II ESERCITAZIONE N°13 Heap massimo.
Esercizi su alberi binari
Tail recursion: esempio
Mergesort1 if (n>1) /* la collezione contiene almeno due elementi. */ {1. Dividi la collezione in due di circa la metà degli elementi. 2. chiamata ricorsiva.
Alberi binari Definizione della struttura dati: struct tree { };
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.
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.
Laboratorio di Linguaggi lezione IV Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea in.
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 code Date due code in ingresso a valori interi in ordine crescente, scrivere una funzione che restituisca una terza coda che contenga i valori.
Esercizi su alberi binari
nome: sequenza di caratteri usata per denotare un oggetto
memoria gestita staticamente:
1 Strutture Dinamiche Corso di Informatica A Vito Perrone.
Le liste dinamiche La ricorsione
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
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 =
2000 Prentice Hall, Inc. All rights reserved. Capitolo 12 (Deitel) Le strutture dati dinamiche Sommario Introduzione Allocazione dinamica.
Corso di informatica Athena – Periti Informatici
2000 Prentice Hall, Inc. All rights reserved. Capitolo 10 (Deitel) Strutture, unioni ed enumerazioni Sommario Introduzione Definire le strutture.
Unità Didattica 3 Linguaggio C
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
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.
C. Gaibisso Programmazione di Calcolatori Lezione XVI Allocazione dinamica della memoria Programmazione di Calcolatori: allocazione dinamica della memoria.
Memoria Dinamica.
Esercizi Liste.
Esercizi su File e Liste
Grafi Rappresentazione mediante liste di adiacenza:
Tail recursion: esempio
Esercizi su alberi binari di ricerca
Alberi binari Definizione della struttura dati: struct tree { };
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.
LdL - LP1 - lez 11 - ver 6 - aa Linguaggi di programmazione I Stringhe (II) Prof. Luigi Di Lascio Lezione 11.
Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a – 3° ciclo.
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 5 Le strutture informative Corso di Informatica 2 a.a. 2003/04 Lezione 5.
Struttura di una lista legata Una lista legata è una variabile strutturata in cui ogni elemento mantiene l’indirizzo (mediante un puntatore) dell’elemento.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
Esercitazione su Vector. Permette di definire collezioni di dati generiche, che sono in grado di memorizzare elementi di ogni sottotipo di Object Definito.
Fondamenti di Informatica II Ingegneria Informatica (A-I) Prof. M.T. PAZIENZA a.a – 3° ciclo.
Algoritmi e Strutture Dati Strutture Dati Elementari.
1 FONDAMENTI DI INFORMATICA II Ingegneria Gestionale a.a ° Ciclo Strutture Dati.
ALLOCAZIONE STATICA: LIMITI Per quanto sappiamo finora, in C le variabili sono sempre dichiarate staticamente –la loro esistenza deve essere prevista e.
1 Strutture dati. 2 Astrazione Non vogliamo sapere l’organizzazione fisica dei dati  indirizzi e celle di memoria Ci interessa solo la loro organizzazione.
Puntatori in C Un puntatore è una variabile che contiene un indirizzo di memoria. Quando una variabile contiene l’indirizzo di un’altra variabile, si dice.
Lezione n. Parole chiave: Corso di Laurea: Insegnamento: Docente: A.A Salvatore Cuomo Strutture dati di tipo astratto 19 Strutture dati,
13. Strutture dati dinamiche Ing. Simona Colucci Informatica - CDL in Ingegneria Industriale- A.A
1 MODULO STRUTTURE DATI FONDAMENTALI: Strutture dinamiche classe 4° INDUSTRIALE INFORMATICA Focus on.
Transcript della presentazione:

15 maggio 2002 Avvisi: Ultima lezione: mercoledì 29 maggio II Esonero: mercoledì 5 giugno, ora da stabilire

Strutture dati dinamiche La dimensione cresce e diminuisce durante lesecuzione Liste linkate - inserimenti e cancellazioni in qualunque punto Pile (Stacks) – inserimenti e cancellazioni solo alla testa della pila Code (Queue) – inserimenti solo alla fine e cancellazioni solo allinizio Alberi binari – efficienti operazioni di ricerca e ordinamento, eliminazione di chiavi duplicate

Strutture auto-referenzianti (ricorsive) –Le strutture possono contenere come membro un puntatore ad una struttura dello stesso tipo –Possono essere collegate (linkate) insieme per formare strutture dati molto importanti: liste, pile, code e alberi –Terminano con un puntatore NULL ( 0 ) Due strutture ricorsive linkate insieme 1015 puntatore NULL (punta a niente) Membri: dati e puntatore

Strutture auto-referenzianti (ricorsive) struct node { int data; struct node *nextPtr; } nextPtr – punta ad un oggetto del tipo node –Si chiama link : collega un node ad un altro node

Allocazione dinamica della memoria malloc –Prende il numero di byte da allocare –Usa sizeof per determinare la size di un oggetto –Restituisce un puntatore di tipo void * Un puntatore void * puo essere assegnato a qualunque puntatore Se non ce memoria disponibile, restituisce NULL –newPtr = malloc( sizeof( struct node ) ); free –De-alloca la memoria allocata con malloc –Prende un puntatore come argomento –free (newPtr);

Liste linkate (concatenate) –Collezione lineare di strutture ricorsive, chiamate nodi, connesse da puntatori chiamati links –Si accede ad una lista tramite un puntatore al primo nodo della lista –I nodi successivi sono raggiunti via i membri puntatori-link. –Il puntatore link dellultimo nodo e settato a null per indicare la fine della lista Si usa una lista linkata invece che un array quando: –Il numero degli elementi non e predicibile –La lista ha bisogno di essere ordinata

Liste linkate –Lista singolarmente linkata Comincia con un puntatore al primo nodo Termina con un puntatore null Si attraversa solo in una direzione –Lista circolare singolarmente linkata Il puntatore dellultimo nodo punta al primo nodo –Lista doppiamente linkata Due puntatori start: il primo e lultimo elemento Ogni nodo ha un puntatore in avanti e uno allindietro Consente attraversamenti sia in avanti che allindietro –Lista circolare doppiamente linkata Il puntatore in avanti dellultimo nodo punta al primo nodo, mentre il puntatore allindietro dellultimo nodo punta allultimo nodo

Manipolazione e manutenzione di una lista Analizziamo il codice lista.c direttamente sul compilatore…

Esercizi Integrare il programma lista.c con le seguenti funzioni: Funzione search che ricerca un dato valore allinterno di una lista concatenata. La funzione dovra restituire il puntatore a quel valore o null nel caso che tale valore non sia presente nella lista. Funzione r_search : come la precedente, ma ricorsiva Riscrivere la funzione delete in modo che utilizzi esplicitamente la funzione search ( o r_search) Funzione inverse che restituisce la liste con gli elementi in ordine inverso

Esercizi Funzione count che restituisce il numero di elementi di una lista Funzione buildlist che prende in input una sequenza di valori e restituisce una lista in cui tali valori sono ordinati (la funzione utilizza insert ) Funzione concatenate che prende due liste e restituisce una lista ottenuta concatenando la seconda alla fine della prima