Fondamenti di Informatica

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Fondamenti di Informatica"

Transcript

1 Strutture dati complesse Esempi di strutture dati complesse analizzate in questa lezione: Fondamenti di Informatica 21. Strutture di dati complesse in C++ Array di puntatori Pila (Stack) Coda (queue) Liste semplici (semplicemente linkate) Liste doppie (doppiamente linkate) Corso di Laurea in Ingegneria Informatica e dell Automazione A.A Semestre Prof. Giovanni Pascoschi Fondamenti di Informatica A.A a cura di Pascoschi Giovanni 2 Array di puntatori Esempio di array di puntatori L istruzione : char* strin[4]; 0xAB00 m a r i o \0 tipo* array[dim]; dichiara un array di puntatori, dove: Il nome dell'array è array L'array ha dim elementi Gli elementi array[0], array[1],...sono puntatori a dati di tipo tipo La memoria per i singoli dati deve essere allocata esplicitamente Gli array di puntatori permettono di ridurre la quantità di memoria allocata al minimo indispensaile strin[0] strin[1] strin[2] strin[3] 0xAB00 0xB392 0xAC84 0xB0F0 0xB392 a \0 0xAC84 0xB0F0 p i n o \0 a n g e l a \0 L occupazione in memoria è al minimo indispensabile, al contrario della dichiarazione statica di 4 array di dimensione fissa. Fondamenti di Informatica A.A a cura di Pascoschi Giovanni 3 Fondamenti di Informatica A.A a cura di Pascoschi Giovanni 4

2 Esempio di array di puntatori Esempio di array di puntatori Esempio: Array di 4 stringhe di lunghezza variabile tra 1 e 20 caratteri Se allocato staticamente Ogni elemento deve essere di 21 byte per poter contenere la stringa di dimensione massima ( 20 caratteri più il terminatore) In totale sono necessari 4 x 21 = 84 bytes Se allocato dinamicamente Ogni elemento è un puntatore e occupa 4 byte È allocata la memoria necessaria a contenere esattamente le singole stringhe Se tutte le stringhe sono lunghe 8 caratteri ogni stringa occupa 9 byte Array statico Dimensione totale: 4 x 21 = 84 Dimensione dati: 4 x 9 = 36 Efficienza: 36 / 84 = 42% Array dinamico Dimensione totale: 4 x x 9 = 52 Dimensione dati: 4 x 9 = 36 Efficienza: 36 / 52 = 69% Fondamenti di Informatica A.A a cura di Pascoschi Giovanni 5 Fondamenti di Informatica A.A a cura di Pascoschi Giovanni 6 Pila (Stack) con array Pila (Stack) con array la Pila (Stack) è un insieme di dati che permette l inserimento di nuovi elementi e l estrazione degli elementi introdotti da un unica estremità il funzionamento della pila viene denominato LIFO (Last Input First Output) meccanismo utilizzato per gestire le chiamate alle funzioni (insieme degli indirizzi di rientro) oppure nel registro di stack (linguaggio assembly) operazione di inserimento di un dato push operazione di estrazione di un dato pop L implementazione di una pila puo essere fatta tramite un array (dimensione fissa) push A[0] A[1] A[2] pop testa = 0... A[MAX-1] testa = MAX Fondamenti di Informatica A.A a cura di Pascoschi Giovanni 7 Fondamenti di Informatica A.A a cura di Pascoschi Giovanni 8

3 Esempio Pila Esempio Pila #include <iostream> using namespace std; const int MAX = 20; int Pila[MAX]; int testa; void clearpila( ); void pop( ); void push( ); void readpila( ); void menu( ); int main( ) { int scelta; clearpila( ); menu( ); cout<< Seleziona una voce ; cin>>scelta; while(scelta <1 scelta >5); switch(scelta) { case 1: clearpila( ); case 2: pop( ); case 3: push( ); case 4: readpila( ); while(scelta!=5); return 0; Fondamenti di Informatica A.A a cura di Pascoschi Giovanni 9 void pop( ) { if( testa == MAX) cout<< La pila e vuota. Impossibile estrarre un dato << endl; else{ cout << Elemento estratto = << Pila[testa] << endl; testa++; void push( ) { int dato; if (testa == 0) cout<< La pila è piena. Impossibile inserire altri dati << endl; else{ cout << dato da inserire = ; cin>> dato; testa- -; Pila[testa] = dato; Fondamenti di Informatica A.A a cura di Pascoschi Giovanni 10 Esempio Pila Coda (Queue) con array void clearpila( ) { testa = MAX; cout<< Pila vuota << endl; void readpila( ) { for(int i=testa; i< MAX; i++) { cout<< Pila[i] << endl; la Coda (Queue) è un insieme di dati che permette l inserimento di nuovi elementi da una parte e l estrazione degli elementi introdotti dalla parte opposta il funzionamento della coda viene denominato FIFO (First Input First Output) operazione di inserimento di un dato push void menu( ) { cout << endl; cout << 1. Pulisci pila << endl; cout << 2. Estrai un dato << endl; cout << 3. Aggiungi un dato << endl; cout << 4. Leggi pila << endl; cout << 5. Fine << endl; operazione di estrazione di un dato pop Fondamenti di Informatica A.A a cura di Pascoschi Giovanni 11 Fondamenti di Informatica A.A a cura di Pascoschi Giovanni 12

4 Coda (Queue) con array Esempio Coda L implementazione di una coda puo essere fatta tramite un array (dimensione fissa) pop fine = -1 A[0] A[1] A[MAX-1]... push fine = MAX-1 Fondamenti di Informatica A.A a cura di Pascoschi Giovanni 13 #include <iostream> using namespace std; const int MAX = 20; int Coda[MAX]; int fine; void clearcoda( ); void pop( ); void push( ); void readcoda( ); void menu( ); int main( ) { int scelta; clearcoda( ); menu( ); cout<< Seleziona una voce ; cin>>scelta; while(scelta <1 scelta >5); switch(scelta) { case 1: clearcoda( ); case 2: pop( ); case 3: push( ); case 4: readcoda( ); while(scelta!=5); return 0; Fondamenti di Informatica A.A a cura di Pascoschi Giovanni 14 Esempio Coda Esempio Coda void pop( ) { if( fine ==-1) cout<< La coda e vuota. Impossibile estrarre un dato << endl; else{ cout << Elemento estratto = << Coda[0] << endl; for(int i=1; i<= fine; i++) Coda[i-1] = Coda[i]; fine- -; void push( ) { int dato; if (fine == MAX-1) cout<< La coda è piena. Impossibile inserire altri dati << endl; else{ cout << dato da inserire = ; cin>> dato; fine++; Coda[fine] = dato; Fondamenti di Informatica A.A a cura di Pascoschi Giovanni 15 void clearcoda( ) { fine = -1; cout<< Coda vuota << endl; void readcoda( ) { for(int i=0; i<= fine; i++) { cout<< Coda[i] << endl; void menu( ) { cout << endl; cout << 1. Pulisci coda << endl; cout << 2. Estrai un dato << endl; cout << 3. Aggiungi un dato << endl; cout << 4. Leggi coda << endl; cout << 5. Fine << endl; Fondamenti di Informatica A.A a cura di Pascoschi Giovanni 16

5 Liste semplici (semplicemente linkate) Liste semplici Una lista semplice e costituita da nodi Ogni nodo e una struttura che contiene : Dati Un riferimento (puntatore) al nodo successivo Riferimenti esterni Puntatore al primo elemento della lista: Un riferimento speciale indica la fine della lista: Puntatore a Puntatore al nodo stesso Struttura logica di una lista semplice Il terminatore è un puntatore a Il terminatore è un puntatore all'elemento stesso In una lista circolare il terminatore punta al primo elemento della lista Fondamenti di Informatica A.A a cura di Pascoschi Giovanni 17 Fondamenti di Informatica A.A a cura di Pascoschi Giovanni 18 Esempio lista semplice Esempio lista semplice Una lista semplice può essere percorsa solo in avanti, cioè dalla testa verso la coda 0xBA04 0xBA42 0xBB86 0xBA04 struct node { int data; node* next; ; 125 0xBA xBB Per scorrere una lista è necessaria una variabile temporanea per puntare ad un generico elemento Non si può usare il puntatore alla testa altrimenti si perde il riferimento al primo elemento curr puntatore corrente puntatore alla testa della lista curr = ; // curr punta alla testa della lista curr = curr->next; // curr punta al prossimo nodo della lista Fondamenti di Informatica A.A a cura di Pascoschi Giovanni 19 Fondamenti di Informatica A.A a cura di Pascoschi Giovanni 20

6 Esempio lista semplice : inserimento Esempio lista semplice : cancellazione Per inserire un nuovo elemento nella lista bisogna trovare la posizione giusta e poi aggiustare i puntatori. Per cancellare un nuovo elemento nella lista bisogna trovare la posizione giusta e poi aggiustare i puntatori. curr prec curr prec nuovo struct node* nuovo; nuovo = new node; nuovo->data = 1234; nuovo->next = ; struct node* curr; curr = prec->next; prec->next = curr->next; nuovo->next = curr; prec->next = nuovo; Fondamenti di Informatica A.A a cura di Pascoschi Giovanni 21 Fondamenti di Informatica A.A a cura di Pascoschi Giovanni 22 Esempio Lista semplice (in ordine alfabetico) #include <iostream> #include <string> using namespace std; struct Node{ string nome; Node* next; ; Node* ; void StartupList( ); // creazione lista vuota void ResetList( ); // eliminazione lista void InsertList( ); //inserimento nuovo nodo void RemoveList( ); //cancellazione nodo void ShowList(); // visualizza lista bool IsEmptyList(); // lista vuota? void menu( ); int main( ) { int scelta; StartupList( ); menu( ); cout<< Seleziona una voce ; cin>>scelta; while(scelta <1 scelta >5); switch(scelta) { case 1: InsertList( ); case 2: RemoveList( ); case 3: ShowList( ); case 4: ResetList( ); while(scelta!=5); ResetList(); return 0; Fondamenti di Informatica A.A a cura di Pascoschi Giovanni 23 Esempio Lista semplice void StartupList( ) { =; bool IsEmptyList( ) { if (== ) return true; else return false; void ShowList( ) { Node* v; cout<< Elenco dei nominativi <<endl; v = ; while(v!= ) { cout<< v->nome << endl; v = v->next; cout<< Fine elenco nominativi <<endl; void ResetList( ) { Node* curr; while(!= ) { cout<< Nominativo eliminato: << ->nome << endl; curr = ; = -> next; delete curr; cout<< Lista vuota <<endl; void menu( ) { cout << endl; cout << 1. Inserisci nominativo << endl; cout << 2. Rimuovi nominativo << endl; cout << 3. Visualizza lista << endl; cout << 4. Svuota lista << endl; cout << 5. Fine << endl; Fondamenti di Informatica A.A a cura di Pascoschi Giovanni 24

7 Esempio Lista semplice Esempio Lista semplice void InsertList( ) { string Nomeins; Node* nuovo; // puntatore del nuovo nodo Node* curr; // puntatore temporaneo Node* prec; // puntatore al nodo precedente cout<< Nominativo da inserire ; //info nuovo nodo cin>> Nomeins; nuovo = new Node; nuovo-> nome = Nomeins; nuovo->next = ; else { curr = ; //nodo fluttuante temporaneo while(curr!= && nuovo->nome>=curr->nome) { // si scorre la lista fino alla fine prec = curr; // il nodo temporaneo diventa il nodo precedente curr = curr->next; // il puntatore al successivo viene assegnato a temp nuovo->next = curr; // si è trovato il nodo che segue il nodo nuovo prec->next = nuovo; if(isemptylist()==true) = nuovo; // se lista vuota nuovo = nuova testa else { if(->nome >= nuovo->nome) { //nuovo nodo precede testa in ord. alf? curr = ; // la testa diventa il nodo curr = nuovo; // il nuovo nodo diventa la testa ->next = curr; //il puntatore al next di testa è curr return; Fondamenti di Informatica A.A a cura di Pascoschi Giovanni 25 Fondamenti di Informatica A.A a cura di Pascoschi Giovanni 26 Esempio Lista semplice Esempio Lista semplice void RemoveList( ) { string Nomeins; Node* curr; // puntatore temporaneo Node* prec; // puntatore al nodo precedente bool trovato = false; cout<< Nominativo da rimuovere ; cin>> Nomeins; if(isemptylist()==true) cout<< La lista è già vuota <<endl; // lista vuota else { if(->nome == Nomeins) { //nome = nome inserito? trovato = true; // la testa diventa il nodo curr curr = ->next; // il nuovo nodo diventa la testa : si salva next cout<< Nome eliminato: << ->nome <<endl; delete ; = curr; // nuova testa è l elemento successivo else { curr = ->next; //nodo fluttuante temporaneo prec = ; while(!trovato && curr!= ) { // si scorre la lista fino alla fine if(curr->nome == Nomeins) { trovato = true; prec->next = curr->next; // il nodo curr viene bypassato cout<< Nome eliminato : << curr->nome << endl; delete curr; else { prec = curr; // curr diventa il nodo precedente curr = curr->next; // curr->next diventa in nuovo curr if(! trovato) cout<< Nome non trovato nella lista <<endl;; Fondamenti di Informatica A.A a cura di Pascoschi Giovanni 27 Fondamenti di Informatica A.A a cura di Pascoschi Giovanni 28

8 Lista doppiamente linkata Liste doppiamente linkate Una lista doppiamente linkata e costituita da nodi Ogni nodo e una struttura che contiene Dati Un riferimento (puntatore) al nodo successivo Un riferimento (puntatore) al nodo precedente Riferimenti esterni Puntatore al primo elemento della lista: Puntatore al primo elemento della lista in senso opposto: Struttura logica di una lista doppiamente linkata I terminatori sono due puntatori a I terminatori sono due puntatori all elemento stesso Un riferimento speciale indica la fine della lista in maniera analoga alle liste semplici In una lista circolare i terminatori puntano al capo opposto della lista Fondamenti di Informatica A.A a cura di Pascoschi Giovanni 29 Fondamenti di Informatica A.A a cura di Pascoschi Giovanni 30 Esempio lista doppiamenta linkata Esempio lista doppiamenta linkata Struttura logica di una lista doppiamente linkata non circolare e i terminatori puntatori a 0xBA04 0xBA04 0xBAF4 0xBB32 0xBAF xBB xBA xBAF4 0xBB32 Una lista doppia può essere percorsa in due versi: In avanti, cioè dalla testa verso la coda Indietro, cioè dalla coda verso la testa È necessaria una variabile temporanea curr per puntare ad un generico elemento curr = ; curr = curr->next; // per scorrere in avanti la lista struct node { int data; struct node* next; struct node* prev; ; curr = ; curr = curr->prev; // per scorrere all indietro la lista Fondamenti di Informatica A.A a cura di Pascoschi Giovanni 31 Fondamenti di Informatica A.A a cura di Pascoschi Giovanni 32

9 Esempio lista doppia : inserimento Esempio lista doppia : inserimento Per inserire un nuovo elemento nella lista bisogna trovare la posizione giusta e poi aggiustare i puntatori. struct node* nuovo; nuovo = new node; nuovo->data = 1234; nuovo->next = ; nuovo->prev = ; nuovo->next = curr->next; nuovo->prev = curr; curr->next->prev = nuovo; curr->next = nuovo; Fondamenti di Informatica A.A a cura di Pascoschi Giovanni 33 Fondamenti di Informatica A.A a cura di Pascoschi Giovanni 34 Esempio lista doppia : rimozione Esempio lista doppia : rimozione Per rimuovere un nodo da una lista doppiamente linkata bisogna trovare la posizione giusta e poi aggiustare i puntatori. curr old struct node* old; old = curr->next; curr->next=old->next; old->next->prev=old->prev; delete old; curr curr old Fondamenti di Informatica A.A a cura di Pascoschi Giovanni 35 Fondamenti di Informatica A.A a cura di Pascoschi Giovanni 36

10 Riepilogo della lezione Fine della lezione Strutture di dati complesse Array di puntatori Pila Coda Liste linkate semplici Liste doppiamente linkate Domande? Fondamenti di Informatica A.A a cura di Pascoschi Giovanni 37 Fondamenti di Informatica A.A a cura di Pascoschi Giovanni 38

Laboratorio di Informatica

Laboratorio di Informatica Liste semplici (semplicemente linkate) Una lista semplice e costituita da nodi Laboratorio di Informatica 7. Strutture complesse di dati in C++ Ogni nodo e una struttura che contiene : Dati Un riferimento

Dettagli

Laboratorio di Informatica

Laboratorio di Informatica Strutture di dati Laboratorio di Informatica 5. Strutture / Array di oggetti / Pila&Coda in C++ Una struttura è un insieme finito di variabili (dette campi) non necessariamente dello stesso tipo, ognuna

Dettagli

Laboratorio Informatica Classe 4A Serale Venerdì 18/02/2011. Gruppo. Cognome Riontino Nome Raffaele. Cognome Nome

Laboratorio Informatica Classe 4A Serale Venerdì 18/02/2011. Gruppo. Cognome Riontino Nome Raffaele. Cognome Nome Laboratorio Informatica Classe 4A Serale Venerdì 18/02/2011 Gruppo Cognome Riontino Nome Raffaele Cognome Nome TRACCIA 2 ARGOMENTO: LISTE TEMPO: 4h 1. Utilizzando Typedef definire un nuovo tipo di dato

Dettagli

Gestione dinamica di una coda

Gestione dinamica di una coda Gestione dinamica di una coda Una coda o queue è una lista lineare a lunghezza variabile in cui l'inserimento di nuovi elementi (push) viene effettuato ad un estremo (fondo o rear) e l'estrazione degli

Dettagli

Fondamenti di Informatica II

Fondamenti di Informatica II Università degli studi di Messina Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica e delle Telecomunicazioni Fondamenti di Informatica II Tipi di dati astratti(adt)- seconda parte Coda Struttura

Dettagli

Esercitazioni di Fondamenti di Informatica - Lez. 8 27/11/2018

Esercitazioni di Fondamenti di Informatica - Lez. 8 27/11/2018 Esercitazioni di Fondamenti di Informatica - Lez. 8 27/11/2018 Esercizi sull allocazione dinamica della memoria in C Il codice di questi esercizi é contenuto nella cartella parte1 1. Implementare una lista

Dettagli

struct costobiglietto { //struttura per prezzo float prezzo; float tasse; float prezzototale; };

struct costobiglietto { //struttura per prezzo float prezzo; float tasse; float prezzototale; }; /* Programma 12cppEse1.cpp Autore : Riontino Raffaele 4 informatici ITIS Molinari - Milano corso serale 2/11/2010 Testo : Si vuole realizzare un tipo struct, utilizzato per informazioni su biglietti per

Dettagli

Gestione dinamica di una lista

Gestione dinamica di una lista Gestione dinamica di una lista La lista lineare è una struttura astratta di dati a lunghezza variabile in cui l'inserimento di un nuovo elemento e l'estrazione di un elemento può essere effettuata in una

Dettagli

Allocazione dinamica memoria

Allocazione dinamica memoria Allocazione dinamica memoria Marco Casazza 11/12/2017 1 Esercizio 1 1 /* 2 Creare una lista bidirezionale di interi, ovvero una lista 3 che permette lo scorrimento in entrambe le direzioni ( dal primo

Dettagli

Corso di Fondamenti di Informatica. Puntatori e Allocazione Dinamica

Corso di Fondamenti di Informatica. Puntatori e Allocazione Dinamica Corso di Fondamenti di Informatica Puntatori e Allocazione Dinamica I puntatori (Richiamo) Il C++ prevede puntatori a dati di qualsiasi natura, semplici o strutturati e puntatori a funzione. In particolare

Dettagli

Classe: vettore di interi

Classe: vettore di interi Classe: ettore di interi #include using namespace std; int main() { Oggetto VettoreInteri contenente 10 elementi di tipo intero VettoreInteri ett;... return 0; Se olessimo un ettore di 20 elementi?

Dettagli

Liste concatenate. Violetta Lonati

Liste concatenate. Violetta Lonati Liste concatenate Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica 2 novembre 2017 Violetta Lonati Liste

Dettagli

Informatica 3. LEZIONE 13: Liste doppie, pile e code. Modulo 1: Free list Modulo 2: Lista doppia Modulo 3: Pila Modulo 4: Coda

Informatica 3. LEZIONE 13: Liste doppie, pile e code. Modulo 1: Free list Modulo 2: Lista doppia Modulo 3: Pila Modulo 4: Coda Informatica 3 LEZIONE 13: Liste doppie, pile e code Modulo 1: Free list Modulo 2: Lista doppia Modulo 3: Pila Modulo 4: Coda Informatica 3 Lezione 13 - Modulo 1 Free list Free list Le funzioni di sistema

Dettagli

La struttura dati CODA

La struttura dati CODA Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2016-2017 La struttura dati CODA Pietro Di Lena - pietro.dilena@unibo.it Introduzione Una coda (o queue) è una struttura dati astratta

Dettagli

Informatica 3. Informatica 3. LEZIONE 13: Liste doppie, pile e code. Lezione 13 - Modulo 1. Free list (2) Free list. Free list

Informatica 3. Informatica 3. LEZIONE 13: Liste doppie, pile e code. Lezione 13 - Modulo 1. Free list (2) Free list. Free list LEZIONE 13: Liste doppie, pile e code Modulo 1: Free list Modulo 2: Lista doppia Modulo 3: Pila Modulo 4: Coda Lezione 13 - Modulo 1 Free list Politecnico di Milano - Prof. Sara Comai 1 Politecnico di

Dettagli

#include <iostream> #include <cstring> #include <fstream> using namespace std; struct elem{ char parola[31]; elem *pun; };

#include <iostream> #include <cstring> #include <fstream> using namespace std; struct elem{ char parola[31]; elem *pun; }; #include #include #include using namespace std; struct elem{ char parola[31]; elem *pun; ; struct Dizionario{ elem *testa; ; void inizializzadizionario(dizionario &D){ D.testa

Dettagli

Oggetti e classi. La classe è un modello (un contenitore) che definisce la forma di un oggetto, specificando:

Oggetti e classi. La classe è un modello (un contenitore) che definisce la forma di un oggetto, specificando: Classi Oggetti e classi La classe è un modello (un contenitore) che definisce la forma di un oggetto, specificando: Come è fatto (i dati) Quali operazioni si possono fare con- e sull oggetto (le funzioni)

Dettagli

Corso di Fondamenti di Informatica Prof. Aldo Franco Dragoni Prova scritta del 21/06/2010. Avvertenze. Specifiche

Corso di Fondamenti di Informatica Prof. Aldo Franco Dragoni Prova scritta del 21/06/2010. Avvertenze. Specifiche Avvertenze Usare ESCLUSIVAMENTE penne ad inchiostro nero o blu (NO MATITE). Consegnare solo fogli formato A4 scritti da ambo le parti. In testa a ciascun foglio scrivere: cognome, nome, numero progressivo

Dettagli

Politecnico di Milano. Strutture dati dinamiche

Politecnico di Milano. Strutture dati dinamiche Politecnico di Milano Strutture dati dinamiche Strutture dati statiche e dinamiche In C le dimensioni di ogni dato sono note prima dell esecuzione Sarebbe utile avere contenitori la cui dimensione varia

Dettagli

Corso di Fondamenti di Informatica

Corso di Fondamenti di Informatica Corso di Fondamenti di Informatica Il tipo puntatore; l allocazione dinamica della memoria Claudio De Stefano - Corso di Fondamenti di Informatica 1 puntatori una variabile di tipo puntatore al tipo x

Dettagli

La Struttura Dati Pila

La Struttura Dati Pila La Struttura Dati Pila La pila o stack è una particolare struttura dati in cui l'inserimento e la cancellazione sono consentite solo in una specifica posizione, chiamata cima (top) dello stack. La gestione

Dettagli

Tipi strutturati - struct

Tipi strutturati - struct Fondamenti di Programmazione A Appunti per le lezioni Gianfranco Rossi Tipi strutturati - struct Struttura dati (concreta) struct: sequenza di n elementi (n 0), rispettivamente di tipo t1,,tn (non necessariamente

Dettagli

Laboratorio di Programmazione

Laboratorio di Programmazione Laboratorio di Programmazione (Laurea triennale in matematica) Lezione 21 Strutture dinamiche Gli array ci permettono di memorizzare un insieme di dati dello stesso tipo Deve essere noto staticamente il

Dettagli

Implementazione dell albero binario in linguaggio C++

Implementazione dell albero binario in linguaggio C++ Implementazione dell albero binario in linguaggio C++ Costruire il programma per gestire le operazioni su un albero binario. Ogni nodo dell albero contiene un codice e una descrizione; il programma deve

Dettagli

Linguaggio C: Strutture e Liste Concatenate Valeria Cardellini

Linguaggio C: Strutture e Liste Concatenate Valeria Cardellini Linguaggio C: Strutture e Liste Concatenate Valeria Cardellini Corso di Calcolatori Elettronici A.A. 2018/19 Università degli Studi di Roma Tor Vergata Dipartimento di Ingegneria Civile e Ingegneria Informatica

Dettagli

tipi di dato astratti

tipi di dato astratti tipi di dato astratti A. FERRARI ADT Un tipo di dato astratto o ADT (Abstract Data Type) è un tipo di dato le cui istanze possono essere manipolate con modalità che dipendono esclusivamente dalla semantica

Dettagli

Laboratorio di Programmazione

Laboratorio di Programmazione Laboratorio di Programmazione (Laurea triennale in matematica) Lezione 25 Le liste in C struct nodo { int info; struct nodo *next; }; typedef struct nodo Nodo; typedef Nodo *PNodo; Inserimento in ordine

Dettagli

Fondamenti di Informatica II 25. Laboratorio 7

Fondamenti di Informatica II 25. Laboratorio 7 Template di classi e regole per i file di include Fondamenti di Informatica II 25. Laboratorio 7 per le classi normali occorrono tipicamente due file: un file di er.h (p.e. pila.h) che contiene la definizione/specifica

Dettagli

10/10/2016. Caratteristiche degli array. Il tipo RECORD. Il record. LABORATORIO DI PROGRAMMAZIONE 2 Corso di laurea in matematica

10/10/2016. Caratteristiche degli array. Il tipo RECORD. Il record. LABORATORIO DI PROGRAMMAZIONE 2 Corso di laurea in matematica Caratteristiche degli array Principali caratteristiche degli array: LABORATORIO DI PROGRAMMAZIONE 2 Corso di laurea in matematica Marco Lapegna Dipartimento di Matematica e Applicazioni Universita degli

Dettagli

Esercizi Strutture dati di tipo astratto

Esercizi Strutture dati di tipo astratto Salvatore Cuomo Esercizi Strutture dati di tipo astratto Lezione n. 20 Parole chiave: Strutture dati, pile code, liste Corso di Laurea: Informatica Insegnamento: Programmazione II, modulo di Laboratorio

Dettagli

Strutture Dinamiche. Fondamenti di Informatica

Strutture Dinamiche. Fondamenti di Informatica Strutture Dinamiche Fondamenti di Informatica 1 Indice Allocazione e de-allocazione di memoria Liste e loro gestione Companies, srl 2 Allocazione e cancellazione di memoria malloc (sizeof (TipoDato));

Dettagli

Sommario. Collezioni. Collezioni: Liste: Pile (stack) Collezioni. Collezioni. Collezioni Struttura indicizzata (array) Nodi

Sommario. Collezioni. Collezioni: Liste: Pile (stack) Collezioni. Collezioni. Collezioni Struttura indicizzata (array) Nodi Sommario : Array e liste. Nodi: dati e riferimenti. Liste: LinkedList: specifica e implementazione. Prestazioni. Pile (stack) Informatica Medica, I semestre, C++ 1 Una collezione (contenitore) è un oggetto

Dettagli

Allocazione dinamica della memoria

Allocazione dinamica della memoria Università degli Studi di Milano Corso di Laurea in Informatica, A.A. 2017-2018 Allocazione dinamica della memoria Homepage del corso Turno A Nicola Basilico Dipartimento di Informatica Via Comelico 39/41-20135

Dettagli

Strutture Dinamiche. Strutture Dinamiche

Strutture Dinamiche. Strutture Dinamiche Corso di Informatica A Vito Perrone 1 Indice Allocazione e de-allocazione di memoria Liste e loro gestione 2 Allocazione e cancellazione di memoria malloc (sizeof (TipoDato)); Crea in memoria una variabile

Dettagli

Linked Lists. Liste linkate (1) Progettazione: struct. Liste linkate (2)

Linked Lists. Liste linkate (1) Progettazione: struct. Liste linkate (2) Liste linkate () Linked Lists La combinazione di class/struct e puntatori porta alla creazioni di interessanti Abstract Data Type liste linkate ( stack, queues ), trees Liste linkate come strutture struct

Dettagli

SOMMARIO STACK. STACK: specifica STACK

SOMMARIO STACK. STACK: specifica STACK SOMMARIO STACK Pila (stack): una struttura dati lineare a cui si può accedere soltanto mediante uno dei suoi capi per memorizzare e per estrarre dati. Specifica (descrizione). Implementazione (realizzazione).

Dettagli

Laboratorio di Programmazione

Laboratorio di Programmazione Laboratorio di Programmazione (Laurea triennale in matematica) Lezione 33 Le liste in C struct nodo { int info; struct nodo *next; }; typedef struct nodo Nodo; typedef Nodo *PNodo; Pila (Stack ) La struttura

Dettagli

Parte 4D. Liste doppie. R. Magritte Transfer, D.1

Parte 4D. Liste doppie. R. Magritte Transfer, D.1 Parte 4D Liste doppie R. Magritte Transfer, 1966 4D.1 4D.2 Liste doppie Lista singolarmente concatenata o lineare: ciascun elemento contiene solo un puntatore al prossimo elemento Lista doppiamente concatenata

Dettagli

Algoritmi e Programmazione Avanzata. Pile e code. Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino

Algoritmi e Programmazione Avanzata. Pile e code. Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino Sommario ADT Pile Code. A.A. 2001/2002 APA - 2 1 Sommario ADT Pile Code. A.A. 2001/2002 APA - 3 ADT Le regole che

Dettagli

Pile e code. Sommario. Algoritmi e Programmazione Avanzata. Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino

Pile e code. Sommario. Algoritmi e Programmazione Avanzata. Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino Pile e code Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino Sommario ADT Pile Code. A.A. 2002/2003 APA - Pile e code 2 Politecnico di Torino Pagina 1 di 23 Sommario

Dettagli

Fondamenti di Informatica

Fondamenti di Informatica Programmazione modulare (top-down) Fondamenti di Informatica 15. Funzioni in C++ (parte 1) Problemi complessi Conviene suddividere il programma in sottoprogrammi piu semplici mediante la metodologia di

Dettagli

Linked Lists. Liste linkate (1) liste linkate ( stack, queues ), trees. Liste linkate come strutture

Linked Lists. Liste linkate (1) liste linkate ( stack, queues ), trees. Liste linkate come strutture Linked Lists Liste linkate () La combinazione di class/struct e puntatori porta alla creazioni di interessanti Abstract Data Type liste linkate ( stack, queues ), trees Liste linkate come strutture struct

Dettagli

Vector v1,v2; cout << max(v1,v2) << endl;} T max( max( T p1, p1, T p2 p2 ) { int main() { Per il tipo T deve essere

Vector v1,v2; cout << max(v1,v2) << endl;} T max( max( T p1, p1, T p2 p2 ) { int main() { Per il tipo T deve essere Programmazione generica Programmazione generica INFN, Sezione di Napoli Programmazione generica Programmazione generica Il C++ fornisce un metodo per creare un polimorfismo parametrico. E possibile utilizzare

Dettagli

Liste. Una lista è una struttura dati (formata da elementi dello stesso tipo e collegati insieme) la cui lunghezza può variare dinamicamente.

Liste. Una lista è una struttura dati (formata da elementi dello stesso tipo e collegati insieme) la cui lunghezza può variare dinamicamente. Liste Una lista è una struttura dati (formata da elementi dello stesso tipo e collegati insieme) la cui lunghezza può variare dinamicamente. I suoi elementi sono variabili dinamiche che vengono creati

Dettagli

I PUNTATORI E LE STRUTTURE DATI DINAMICHE. Cosimo Laneve/Ivan Lanese

I PUNTATORI E LE STRUTTURE DATI DINAMICHE. Cosimo Laneve/Ivan Lanese I PUNTATORI E LE STRUTTURE DATI DINAMICHE Cosimo Laneve/Ivan Lanese argomenti 1. dichiarazioni di puntatori 2. le operazione su puntatori (NULL, new, delete, &, *) 3. puntatori passati come parametri e

Dettagli

La definizione del tipo di dato astratto lista è intrinsecamente ricorsiva, infatti una lista può essere:

La definizione del tipo di dato astratto lista è intrinsecamente ricorsiva, infatti una lista può essere: LISTE DINAMICHE Liste semplicemente concatenate: La definizione del tipo di dato astratto lista è intrinsecamente ricorsiva, infatti una lista può essere: la lista vuota; oppure contiene un valore (di

Dettagli

Sommario. Le strutture dati elementari per implementare sequenze: Vettori Liste

Sommario. Le strutture dati elementari per implementare sequenze: Vettori Liste Sequenze Sommario Le strutture dati elementari per implementare sequenze: Vettori Liste Strutture dati elementari Le strutture dati vettore e lista sono fra le strutture dati più usate e semplici Il loro

Dettagli

In questa lezione Strutture dati elementari: Pila Coda Loro uso nella costruzione di algoritmi.

In questa lezione Strutture dati elementari: Pila Coda Loro uso nella costruzione di algoritmi. In questa lezione Strutture dati elementari: Pila Coda Loro uso nella costruzione di algoritmi. 1 strutture dati (astratte) Una struttura dati astratti consiste di uno o più insiemi con delle operazioni

Dettagli

Laboratorio di Programmazione

Laboratorio di Programmazione Laboratorio di Programmazione (Laurea triennale in matematica) Lezione 25 ADT (Abstract Data Types) tipo di dato astratto Un ADT è un modello matematico con una collezione di operatori definiti su tale

Dettagli

Liste concatenate e allocazione dinamica

Liste concatenate e allocazione dinamica Liste concatenate e allocazione dinamica Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2018/2019 Argomenti del Corso Ogni lezione consta di una spiegazione assistita da slide, e seguita

Dettagli

IMPLEMENTAZIONE CONCATENATE DELLE LISTE

IMPLEMENTAZIONE CONCATENATE DELLE LISTE IMPLEMENTAZIONE CONCATENATE DELLE LISTE Liste collegate Come già visto, la realizzazione sequenziale prevede che la sequenzialità degli elementi della lista venga rappresentata dalla adiacenza delle locazioni

Dettagli

LE STRUTTURE DATI DINAMICHE

LE STRUTTURE DATI DINAMICHE LE TRUTTURE DTI DIMICHE Talvolta è necessario allocare spazio di memoria durante l esecuzione di un programma oppure creare variabili di durata temporanea. Esempio: Leggere e memorizzare dei numeri interi

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino A.A. 2006/07 Il concetto di dato Il concetto di tipo di dato Insertion Sort for j 2 to lenght[a]

Dettagli

Gestire le situazioni di errore

Gestire le situazioni di errore Gestire le situazioni di errore #include using namespace std; Classe VettoreDiInteri const int MAX = 10; class VettoreInteri { int v[max]; public: ; Gestire le situazioni di errore Ottenere

Dettagli

Esercitazione 11. Liste semplici

Esercitazione 11. Liste semplici Esercitazione 11 Liste semplici Liste semplici (o lineari) Una lista semplice (o lineare) è una successione di elementi omogenei che occupano in memoria una posizione qualsiasi. Ciascun elemento contiene

Dettagli

cons: L E L (...), e (e,...) Operatori tradizionali sulle liste car: (e,...) cdr: What s LISTE? null: () TRUE (...) FALSE Una lista e' una

cons: L E L (...), e (e,...) Operatori tradizionali sulle liste car: (e,...) cdr: What s LISTE? null: () TRUE (...) FALSE Una lista e' una What s LISTE? Una lista e' una ( es. λ = {4, 9, 1 E = dominio degli elementi di lista (persone, voli, interi, lettere...) L = {λ / λ e' una lista di elementi in E Bool = {TRUE, FALSE cons: L E L (...),

Dettagli

Introduzione. Liste. Strutture ricorsive (2) Strutture ricorsive (1) DD p KP p

Introduzione. Liste. Strutture ricorsive (2) Strutture ricorsive (1) DD p KP p Introduzione Liste DD p. 449-474 KP p.397-424 Abbiamo fin ora studiato strutture dati con dimensione fissa: vettori e matrici strutture Introduciamo ora le strutture dati dinamiche (liste concatenate):

Dettagli

Gestione di files Motivazioni

Gestione di files Motivazioni Gestione di files Motivazioni Un programma in esecuzione legge (sequenzialmente) una sequenza di caratteri prodotti "al volo" dall'utente (tramite tastiera) il programma in esecuzione scrive (sequenzialmente)

Dettagli

Fondamenti di Informatica e Laboratorio T-AB T-15 Strutture dati

Fondamenti di Informatica e Laboratorio T-AB T-15 Strutture dati Fondamenti di Informatica e Laboratorio T-AB T-15 Strutture dati Paolo Torroni Dipartimento di Elettronica, Informatica e Sistemistica Università degli Studi di Bologna Anno Accademico 2008/2009 Sommario

Dettagli

Esercitazione: Implementazione in linguaggio C dell ADT. Stack con l utilizzo. di linked list

Esercitazione: Implementazione in linguaggio C dell ADT. Stack con l utilizzo. di linked list Esercitazione: Implementazione in linguaggio C dell ADT Stack con l utilizzo di linked list Laboratorio di Programmazione Introduzione un ADT (Abstract Data Type) è un modello (formale) che generalizza

Dettagli

Cognome Domanda Nome Punteggio max

Cognome Domanda Nome Punteggio max Fondamenti di Informatica - Proff. C. Bolchini, E. Di Nitto, F. Distante Corso di laurea in Ingegneria Meccanica e Aerospaziale Appello del 18 giugno 2002 Cognome Domanda 1 2 3 4 5 Nome Punteggio max 5

Dettagli

Laboratorio di Programmazione Lezione 3. Cristian Del Fabbro

Laboratorio di Programmazione Lezione 3. Cristian Del Fabbro Laboratorio di Programmazione Lezione 3 Cristian Del Fabbro Prossima lezione GIOVEDÌ 12 NOVEMBRE ORE 14:00 Array a.k.a. vettore Un array è una collezione ordinata di dati omogenei (cioé sono tutti dello

Dettagli

In una coda gli inserimenti si fanno alla fine e le cancellazioni all inizio! First In First Out

In una coda gli inserimenti si fanno alla fine e le cancellazioni all inizio! First In First Out In una coda gli inserimenti si fanno alla e e le cancellazioni all inizio! First In First Out Progr II - Coda 1 CODA: i requisiti Una coda (queue) è un ADT in cui le operazioni sono inserimenti e cancellazioni

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Maria Rita Di Berardini 2, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino 2 Polo di Scienze Università di Camerino ad Ascoli Piceno Il concetto di dato Il concetto

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Strutture Elementari Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino 29 ottobre 2008 Strutture Dati Astratte Il concetto di dato Il concetto

Dettagli

Laboratorio di Algoritmi e Strutture Dati. Pile

Laboratorio di Algoritmi e Strutture Dati. Pile Laboratorio di Algoritmi e Strutture Dati Pile Teresa M.A. Basile basile@di.uniba.it Dipartimento di Informatica Università degli Studi di Bari Aldo Moro Materiale di base gentilmente concesso dal dott.

Dettagli

Liste con sentinella. intlist *createlist(void){ intlist *q = malloc(sizeof(intlist)); if(!q) { exit(-1); } q->next = q->prev = q; return q; }

Liste con sentinella. intlist *createlist(void){ intlist *q = malloc(sizeof(intlist)); if(!q) { exit(-1); } q->next = q->prev = q; return q; } Liste con sentinella Un ulteriore semplificazione delle operazioni sulle liste si ottiene utilizzando un elemento sentinella (dummy) che non contiene informazione, ma serve a segnalare la fine e l inizio

Dettagli

Aggiornamento : 21/11/2010 semplificate le funzioni per il calcolo delle medie.

Aggiornamento : 21/11/2010 semplificate le funzioni per il calcolo delle medie. /* Programma : cpp_medie_statistiche1.1.cpp Autore : Riontino Raffaele 4 informatici corso serale ITIS Molinari - Milano 8/11/2010 Funzionalità : programma che calcola le medie statistiche semplici e ponderate.

Dettagli

PILE E CODE. Pile (stack):

PILE E CODE. Pile (stack): PILE E CODE Sono tipi di dato che consentono di rappresentare sequenze di elementi in cui gli inserimenti e le cancellazioni sono eseguiti con particolari modalita` (politiche o discipline). Pile (stack):

Dettagli

#include <stdio.h> #include <stdlib.h> //necessaria per la malloc #include <string.h> // costante #define MAX_L 30

#include <stdio.h> #include <stdlib.h> //necessaria per la malloc #include <string.h> // costante #define MAX_L 30 /* Dopo aver definito una lista in grado di contenere i dati di alcune persone (nome, genere e altezza in metri), scrivere un programma che consenta di verificare che inizialmente la lista sia vuota e

Dettagli

Array. Unità 7. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER

Array. Unità 7. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Domenico Daniele Bloisi Docenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico

Dettagli

Programmazione 2. Liste Doppiamente Lincate. Prof. Sebastiano Battiato Prof.ssa Rosalba Giugno

Programmazione 2. Liste Doppiamente Lincate. Prof. Sebastiano Battiato Prof.ssa Rosalba Giugno Programmazione 2 Liste Doppiamente Lincate Prof. Sebastiano Battiato Prof.ssa Rosalba Giugno .. Liste doppiamente linkate Le liste linkate semplici consentono di scorrere gli elementi soltanto in una direzione,

Dettagli

Tipi astratti pila e coda

Tipi astratti pila e coda Tipi astratti pila e coda Una pila è un tipo astratto che consente di rappresentare un insieme di elementi in cui ogni eliminazione ha per oggetto l elemento che è stato inserito per ultimo. Questa disciplina

Dettagli

Esercitazioni di Fondamenti di Informatica - Lez. 7 20/11/2018

Esercitazioni di Fondamenti di Informatica - Lez. 7 20/11/2018 Esercitazioni di Fondamenti di Informatica - Lez. 7 0/11/018 Esercizi sull allocazione dinamica della memoria in C 1. Cosa stampa il seguente programma? 1 #d e f i n e MAXLENGTH 0 4 typedef struct { char

Dettagli

Strutture dati dinamiche in C (II)

Strutture dati dinamiche in C (II) Strutture dati dinamiche in C (II) Laboratorio di Linguaggi di Programmazione a.a. 2001/2002 dott.ssa Francesca A. Lisi lisi@di.uniba.it Sommario Le liste concatenate (ancora ma in modo più formale) L

Dettagli

La programmazione nel linguaggio C

La programmazione nel linguaggio C Cancellazione : versione ricorsiva Sfruttiamo la visione ricorsiva della struttura dati per realizzare la cancellazione in modo ricorsivo 1. la cancellazione della vuota non richiede alcuna azione 2. la

Dettagli

ESERCIZIO 1. AZ111 milano 12:34 23 AZ222 buenos-aires 12: BA333 toronto 4:15 20 KM444 madrid 10:12 100

ESERCIZIO 1. AZ111 milano 12:34 23 AZ222 buenos-aires 12: BA333 toronto 4:15 20 KM444 madrid 10:12 100 ESERCIZIO 1 Scrivete un programma per la gestione delle informazioni relative ai voli giornalieri in partenza da un certo aeroporto. Il programma deve leggere da file le informazioni relative ai voli,

Dettagli

Algoritmi e Strutture di Dati

Algoritmi e Strutture di Dati Algoritmi e Strutture di Dati Capitolo 4 - Strutture di dati elementari This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License. To view a copy of this license, visit

Dettagli

Liste singolarmente linkate

Liste singolarmente linkate liste Liste singolarmente linkate Una lista è una struttura dati costituita da un insieme di nodi collegati da puntatori 10 4 7 15 / In una lista singolarmente linkata ogni nodo è composto da : Il valore

Dettagli

Strutture dati dinamiche in C. Emilio Di Giacomo

Strutture dati dinamiche in C. Emilio Di Giacomo Strutture dati dinamiche in C Emilio Di Giacomo Strutture dati Una struttura dati è un contenitore in cui i dati sono organizzati in maniera che possano essere recuperati e manipolati efficientemente Un

Dettagli

Corso di Fondamenti di Informatica Tipi strutturati: Stringhe

Corso di Fondamenti di Informatica Tipi strutturati: Stringhe Corso di Fondamenti di Informatica Tipi strutturati: Stringhe Anno Accademico Francesco Tortorella Stringhe di caratteri La stringa è il tipo strutturato con cui vengono rappresentati gruppi di caratteri

Dettagli

a.a Codice corso: 21012, La definizione del tipo di dato astratto lista è intrinsecamente ricorsiva, infatti una lista può essere:

a.a Codice corso: 21012, La definizione del tipo di dato astratto lista è intrinsecamente ricorsiva, infatti una lista può essere: LISTE DINAMICHE Liste semplicemente concatenate: La definizione del tipo di dato astratto lista è intrinsecamente ricorsiva, infatti una lista può essere: la lista vuota; oppure contiene un valore (di

Dettagli

Titolo presentazione INFORMATICA. sottotitolo A.A Milano, XX mese 20XX Laboratorio n 6 Ing. Gian Enrico Conti Dott.

Titolo presentazione INFORMATICA. sottotitolo A.A Milano, XX mese 20XX Laboratorio n 6 Ing. Gian Enrico Conti Dott. Titolo presentazione INFORMATICA A sottotitolo A.A. 2017-18 Milano, XX mese 20XX Laboratorio n 6 Ing. Gian Enrico Conti Dott. Michele Zanella Info Logistiche (cont d) Calendario laboratori Data Orario

Dettagli

Corso di Fondamenti di Informatica II

Corso di Fondamenti di Informatica II Corso di Fondamenti di Informatica II Allocazione dinamica della memoria a.a. 2009/2010 Francesco Fontanella La Funzione Transfer void transfer(char in[], char voc[], char con[]) { char *pi, *pv, *pc;

Dettagli

Rappresentazione di sequenze...

Rappresentazione di sequenze... Liste Rappresentazione di sequenze... Ritorniamo al nostro problema di rappresentare le sequenze, se vi ricordate avevano sottolineato un paio di problemi della rappresentazione di sequenze usando array

Dettagli

4 Le liste collegate 4.0. Le liste collegate. 4 Le liste collegate Rappresentazione di liste 4.1 Rappresentazione di liste

4 Le liste collegate 4.0. Le liste collegate. 4 Le liste collegate Rappresentazione di liste 4.1 Rappresentazione di liste 4 Le liste collegate 4.0 Le liste collegate c Diego Calvanese Fondamenti di Informatica Corso di Laurea in Ingegneria Elettronica A.A. 2001/2002 4.0 0 4 Le liste collegate Rappresentazione di liste 4.1

Dettagli

La classe std::vector della Standard Template Library del C++

La classe std::vector della Standard Template Library del C++ La classe std::vector della Standard Template Library del C++ Alberto Garfagnini Università degli studi di Padova 23 Ottobre 2013 Programmazione generica in C++ : i Template I templates sono probabilmente

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Dispensa E14 F. Gasparetti, C. Limongelli Maggio 2012 1 Verifica presenza di elementi comuni V1 - Date due liste di stringhe scrivere

Dettagli

Algoritmo di ordinamento per sostituzione. Esempio : dato l array :

Algoritmo di ordinamento per sostituzione. Esempio : dato l array : Algoritmo di ordinamento per sostituzione Per ottenere un ordinamento crescente con l algoritmo di ordinamento per Sostituzione si confronta l elemento nella prima posizione con gli elementi nelle posizioni

Dettagli

Sommario. Tipo stringa: string. Tipo stringa: stile C. Tipo stringa Tipo booleano

Sommario. Tipo stringa: string. Tipo stringa: stile C. Tipo stringa Tipo booleano Tipo stringa Tipo booleano Sommario Ricorsione: Definizione Chiamata di funzione Ricorsione in coda Ricorsione non in coda Ricorsionei eccessiva Esempio di ricorsione: ricerca binaria Tipo stringa Il C++

Dettagli

ADT: Abstract Data Type. Quasi ADT. ADT per collezioni di dati (code generalizzate) 04 I tipi di dati astratti (I parte)

ADT: Abstract Data Type. Quasi ADT. ADT per collezioni di dati (code generalizzate) 04 I tipi di dati astratti (I parte) ADT: Abstract Data Type I tipi di dati astratti (I parte) Gianpiero Cabodi e Paolo Camurati Dip. Automatica e Informatica Politecnico di Torino Scopo Livello di astrazione sui dati tale da mascherare completamente

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Dispensa 09 ADT: Lista, Pila, Coda A. Miola Marzo 2007 http://www.dia.uniroma3.it/~java/fondinf2/ ADT: Lista, Pila, Coda 1 Contenuti Tipo

Dettagli

PROGRAMMAZIONE II canale A-D luglio 2008 TRACCIA DI SOLUZIONE

PROGRAMMAZIONE II canale A-D luglio 2008 TRACCIA DI SOLUZIONE PROGRAMMAZIONE II canale A-D 2007-2008 14 luglio 2008 TRACCIA DI SOLUZIONE 1. Si vogliono realizzare mediante puntatori delle liste circolari, cioè delle liste tali che l ultimo elemento della lista punta

Dettagli

Cesare Rota. Programmare con C++

Cesare Rota. Programmare con C++ Cesare Rota Programmare con C++ Questo fascicolo deve essere allegato al volume Programmare con C++ di Cesare Rota ISBN 978-88-203-4248-7, ne è parte integrante e non può essere venduto separatamente EDITORE

Dettagli

Liste concatenate e allocazione dinamica

Liste concatenate e allocazione dinamica Liste concatenate e allocazione dinamica Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2017/2018 Calendario delle lezioni Ogni lezione consta di una spiegazione assistita da slide,

Dettagli

Strutture dati dinamiche

Strutture dati dinamiche Strutture dati dinamiche - Liste concatenate - Pile -> LIFO (last in first out) - Code -> FIFO (first in first out) - Alberi binari: gestione dati in algoritmi complessi Liste Concatenate Formata da elementi

Dettagli

Lezione 11: Liste a Puntatori e Input/Output

Lezione 11: Liste a Puntatori e Input/Output Lezione 11: Liste a Puntatori e Input/Output Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Università degli Studi di Salerno Struttura della lezione Richiamo: strutture (struct)

Dettagli

Classe Squadra. #include <iostream> using namespace std;

Classe Squadra. #include <iostream> using namespace std; Classe Squadra Si vuole scrivere un programma che gestisce la classifica di un campionato tra squadre di calcio, ognuna identificata dal proprio nome. Il programma deve essere in grado di assegnare un

Dettagli