Fondamenti di Informatica, Ingegneria Elettronica, Università La Sapienza Roma. aa R. Beraldi

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Fondamenti di Informatica, Ingegneria Elettronica, Università La Sapienza Roma. aa R. Beraldi"

Transcript

1

2

3 struct tipocoda TipoElemCoda coda[maxcoda]; int primo, ultimo; ; typedef struct tipocoda TipoCoda;

4 void InCoda(TipoCoda *pc, TipoElemCoda v) if (TestCodaPiena(*pc)) printf("errore: CODA PIENA\n"); else /* posizionamento indice ultimo alla prossima posizione libera */ if ((*pc).primo == -1) /*coda vuota*/ (*pc).ultimo = 0; /*oppure pc->ultimo=0*/ (*pc).primo = 0; else /* coda non vuota*/ (*pc).ultimo = ((*pc).ultimo + 1) % MaxCoda; /* assegnazione di v all'ultimo elemento della coda */ (*pc).coda[(*pc).ultimo] = v; /* InCoda */

5 void OutCoda(TipoCoda *pc, TipoElemCoda *pv) if (TestCodaVuota(*pc)) printf("errore: CODA VUOTA\n"); else *pv = (*pc).coda[(*pc).primo]; if ((*pc).primo == (*pc).ultimo) /*rimozione ultimo elemento*/ (*pc).ultimo = -1; (*pc).primo = -1; else /* coda non vuota */ (*pc).primo = ((*pc).primo + 1) % MaxCoda; /* OutCoda */

6 struct nodolista TipoElemCoda info; struct nodolista *next; ; typedef struct nodolista NodoLista; typedef NodoLista *TipoLista; /* definizione del tipo coda */ struct tipocoda TipoLista primo, ultimo; ; typedef struct tipocoda TipoCoda; void InizioCoda(TipoCoda c, TipoElemCoda *pv) /* Restituisce in *pv il primo elemento della coda c senza modificare c. */ if (c.primo == NULL) printf("errore: elemento affiorante di coda vuota\n"); else *pv = c.primo->info; /* InizioCoda */

7 void InCoda(TipoCoda *pc, TipoElemCoda v) /* Inserisce l'elemento v all'ultimo posto della coda c. */ if (TestCodaVuota(*pc)) /* *pc e` vuota: l'elemento da inserire sara` sia il primo che l'ultimo elemento della coda */ (*pc).primo = malloc(sizeof(nodolista)); (*pc).ultimo = (*pc).primo; else (*pc).ultimo->next = malloc(sizeof(nodolista)); (*pc).ultimo = (*pc).ultimo->next; (*pc).ultimo->info = v; (*pc).ultimo->next = NULL; /* InCoda */ void OutCoda(TipoCoda *pc, TipoElemCoda *pv) /* Elimina il primo nodo della coda *pc, restituendone il valore in *pv. */ TipoLista paux; InizioCoda(*pc, pv); (se esiste) */ /* copia il valore del primo elemento di *pc in v if ((*pc).primo!= NULL) /* elimina il primo elemento di *pc */ paux = (*pc).primo; (*pc).primo = (*pc).primo->next; free(paux); /* se l'elemento eliminato era l'unico elemento presente nella coda, allora si pone a NULL anche il puntatore all'ultimo elemento */ if ((*pc).primo == NULL) (*pc).ultimo = NULL; /* OutCoda */

8

9

10 #define MaxPila 10 typedef int TipoElemPila; /*o qualunque altro tipo */ struct tipopila TipoElemPila pila[maxpila]; int pos; ; typedef struct tipopila TipoPila; void InitPila(TipoPila *pp) pp->pos = -1; /* InitPila */ void Push(TipoPila *pp, TipoElemPila v) /* Inserisce l'elemento v in cima alla pila *pp. */ if (TestPilaPiena(*pp)) printf("errore: PILA PIENA\n"); else pp->pos++; pp->pila[pp->pos] = v; /* Push */

11 void Pop(TipoPila *pp, TipoElemPila *pv) if (TestPilaVuota(*pp)) printf("errore: PILA VUOTA\n"); else *pv = pp->pila[pp->pos]; pp->pos--; /* Pop */ struct nodolista TipoElemPila info; struct nodolista *next; ; typedef struct nodolista NodoLista; typedef NodoLista *TipoLista;

12 Uno degli utilizzi delle pile si ha nella soluzione di problemi che richiedono di effettuare scelte in successione, e per cui può essere necessario ritrattare le scelte fatte per provare altre alternative Tale tecnica si chiama backtracking Si utilizza una pila per memorizzare le alternative alla scelta fatta: Push di una nuova scelta; Pop ed eventuale Push della scelta alternativa quando di deve fare backtracking

13 livello posizione ok! livello (0,1) (0,2) (1,2) Pila 2 (2,1) (2,1) (2,1) Inizializza Pila con mosse iniziali possibili finito FALSO while (Pila &&!finito) Pop(Pila,mossa); sia k il livello della mossa if (k == ultimo livello) then finito=vero; else aggiungi mossa in attraversamento come k-sima mossa Trova mosse livello k+1 if (esistono tali alternative possibili) then Push (Pila, alternative)

Struttura dati astratta Coda

Struttura dati astratta Coda CODE Struttura dati astratta Coda La coda o queue è una struttura dati astratta in cui l'inserimento e l estrazione sono consentite solo in specifiche posizioni; in particolare, l'inserimento è consentito

Dettagli

Il tipo di dato astratto Pila

Il tipo di dato astratto Pila Il tipo di dato astratto Pila Il tipo di dato Pila Una pila è una sequenza di elementi (tutti dello stesso tipo) in cui l inserimento e l eliminazione di elementi avvengono secondo la regola seguente:

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

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

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

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

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

Pag 79: ... int n; void P(int x) { x++; printf("%d", n); printf("%d", x); } main() { n=3; P(n); printf("%d", n); }

Pag 79: ... int n; void P(int x) { x++; printf(%d, n); printf(%d, x); } main() { n=3; P(n); printf(%d, n); } Le pagine che seguono riportano la scrittura in C degli esempi svolti a lezione che sono descritti in pascal nel libro: C. Batini et al., Fondamenti di Programmazione dei Calcolatori Elettronici. Pag 79:...

Dettagli

Previously on TDP. LISTA rappresentata mediante "struct e puntatori" Cosa e aux? Di che tipo e e cosa contiene?

Previously on TDP. LISTA rappresentata mediante struct e puntatori Cosa e aux? Di che tipo e e cosa contiene? Previously on TDP lis ^ ^ 7 21 ** ** 14 *** memoria 9 NULL LISTA rappresentata mediante "struct e puntatori" *** lis->info == cosa? lis->next == ^^; /*cosa e ^^?*/ che cosa e' (*lis)? Cosa e aux? Di che

Dettagli

I tipi di dato astratti

I tipi di dato astratti I tipi di dato astratti.0 I tipi di dato astratti c Diego Calvanese Fondamenti di Informatica Corso di Laurea in Ingegneria Elettronica A.A. 001/00.0 0 I tipi di dato astratti La nozione di tipo di dato

Dettagli

Lezione 23 - ADT LISTA

Lezione 23 - ADT LISTA Lezione 23 - ADT LISTA Rappresentazione concreta del Tipo di Dati Astratto LISTA. - Cenni sulla rappresentazione mediante array (puah!) - Rappresentazione concreta mediante struct e puntatori. - concetto

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

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

in più stringhe,... ADT un tipo è caratterizzato dalle operazioni consentite su di esso: un numero è qualcosa che si può moltiplicare, sommare,...

in più stringhe,... ADT un tipo è caratterizzato dalle operazioni consentite su di esso: un numero è qualcosa che si può moltiplicare, sommare,... ADT un tipo è caratterizzato dalle operazioni consentite su di esso: un numero è qualcosa che si può moltiplicare, sommare,... una stringa è qualcosa che si può concatenare, spezzare in più stringhe,...

Dettagli

Appunti sulla lezione 3

Appunti sulla lezione 3 Appunti sulla lezione 3 Alessandra Raffaetà Università Ca Foscari Venezia Corso di Laurea in Informatica Informazioni sul corso Pagina web del corso: www.dsi.unive.it/~asdnew Mailing list: asd@listserver.dsi.unive.it

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

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

Previously on TDP. LISTA rappresentata mediante "struct e puntatori" TipoLista lis. Dichiarare DISEGNARE e. DISEGNARE aux.

Previously on TDP. LISTA rappresentata mediante struct e puntatori TipoLista lis. Dichiarare DISEGNARE e. DISEGNARE aux. Previously on TDP lis 7 21 ** ** 14 *** *** memoria 9 LISTA rappresentata mediante "struct e puntatori" TipoLista lis lis->info == cosa? lis->next == ; /*cosa e?*/ che cosa e' (*lis)? Dichiarare DISEGNARE

Dettagli

FONDAMENTI DI INFORMATICA. Corso di Laurea in Ingegneria Meccanica. Università degli Studi di Firenze A. A APPUNTI INTEGRATIVI

FONDAMENTI DI INFORMATICA. Corso di Laurea in Ingegneria Meccanica. Università degli Studi di Firenze A. A APPUNTI INTEGRATIVI FONDAMENTI DI INFORMATICA Corso di Laurea in Ingegneria Meccanica Università degli Studi di Firenze A. A. 2006-2007 APPUNTI INTEGRATIVI Strutture dati e Algoritmi di ricerca e ordinamento: modi alternativi

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

Rappresentazione di liste mediante puntatori in linguaggio C

Rappresentazione di liste mediante puntatori in linguaggio C Rappresentazione di liste mediante puntatori in linguaggio C Specifica del tipo degli elementi typedef... TipoElemLista; struct StructLista TipoElemLista key; struct StructLista *next; ; typedef struct

Dettagli

Tecniche della Programmazione, M.Temperini, Liste Concatenate 3 1/18

Tecniche della Programmazione, M.Temperini, Liste Concatenate 3 1/18 Tecniche della Programmazione, M.Temperini, Liste Concatenate 3 1/18 Eliminazione di un elemento da una typedef int TipoElem; int main() { TipoLista ; TipoElem ; /* costruzione */ /* l'el. da eliminare

Dettagli

La Struttura Dati Lista

La Struttura Dati Lista La Struttura Dati Lista Introduzione Nella definizione di un programma mirato alla risoluzione di un determinato problema, la scelta delle strutture dati è di fondamentale importanza per un efficiente

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

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

Struttura Dati Coda: Teoria

Struttura Dati Coda: Teoria Fondamenti di Informatica Corso di Laurea in Ingegneria Elettronica Corso di Laurea in Ingegneria Informatica : Teoria La presente dispensa è stata prodotta dal Prof.S.Cavalieri, ed è ufficialmente adottata

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

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

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

ADT LISTA: altre operazioni non primitive ADT LISTA COSTRUZIONE ADT LISTA COSTRUZIONE ADT LISTA (2)

ADT LISTA: altre operazioni non primitive ADT LISTA COSTRUZIONE ADT LISTA COSTRUZIONE ADT LISTA (2) ADT LISTA Pochi Linguaggi forniscono tipo lista fra predefiniti (LISP, Prolog); per gli altri, ADT lista si costruisce a partire da altre strutture dati (in C tipicamente vettori o puntatori) OPERAZIONI

Dettagli

Programmazione II canale AD -- Esonero del 21/04/2006

Programmazione II canale AD -- Esonero del 21/04/2006 Esercizio 1 (Sbarramento ) Si scriva una funzione ricorsiva che riceve in input una lista concatenata di interi L e restituisce una nuova lista concatenata di interi L1 in cui l elemento j-simo ( j 1)

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

Alberi ed Alberi Binari

Alberi ed Alberi Binari Alberi ed Alberi Binari Il tipo di dato Albero Un albero è una struttura di data organizzata gerarchicamente. È costituito da un insieme di nodi collegati tra di loro: ogni nodo contiene dell informazione,

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

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

Appunti sull'implementazione in C di tipi di dato

Appunti sull'implementazione in C di tipi di dato Appunti sull'implementazione in C di tipi di dato Alessandra Raffaetà Università Ca Foscari Venezia Corso di Laurea in Informatica Programma in un singolo modulo Inserisce i numeri da 1 a 5 in una pila

Dettagli

Pile: implementazioni. Pile. Pile: liste /1. Pile: liste /2. Università Roma La Sapienza Corsi di Laurea Informatica/Tecnologie Informatiche

Pile: implementazioni. Pile. Pile: liste /1. Pile: liste /2. Università Roma La Sapienza Corsi di Laurea Informatica/Tecnologie Informatiche Università Roma La Sapienza Corsi di Laurea Informatica/Tecnologie Informatiche Pile Prof. Stefano Guerrini guerrini@di.uniroma1.it Programmazione II (can. P-Z) A.A. 2005-06 Pile: implementazioni Liste

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

(*lista == NULL (*lista)->info >= elem) accede al campo next di *lista solo se *lista non e' NULL. */ #include <stdio.h> #include <stdlib.

(*lista == NULL (*lista)->info >= elem) accede al campo next di *lista solo se *lista non e' NULL. */ #include <stdio.h> #include <stdlib. /* ATTENZIONE: non accedere mai ai campi di un elemento della lista prima di essersi accertati che tale elemento sia diverso da NULL; Si osservi che la condizione booleana (*lista == NULL (*lista)->info

Dettagli

Politecnico di Milano - Dipartimento di Elettronica e informazione Prof. Mauro Negri

Politecnico di Milano - Dipartimento di Elettronica e informazione Prof. Mauro Negri Politecnico di Milano - Dipartimento di Elettronica e informazione Prof. Mauro Negri Fondamenti di Informatica II prova in itinere 25 gennaio 2011 Matricola Cognome Nome Durata prova: 2 ore Istruzioni

Dettagli

Esercizio 1 (6 punti)

Esercizio 1 (6 punti) Prova scritta del 22 gennaio 2018 di Fondamenti di Informatica II (prof. Di Gaspero) Per studenti di Ing. Gestionale immatricolati negli anni accademici 2016-17 e precedenti DURATA DELLA PROVA: 2 ORE A

Dettagli

LISTE IMPLEMENTATE TRAMITE STRUTTURE COLLEGATE CON DOPPI PUNTATORI

LISTE IMPLEMENTATE TRAMITE STRUTTURE COLLEGATE CON DOPPI PUNTATORI LISTE IMPLEMENTATE TRAMITE STRUTTURE COLLEGATE CON DOPPI PUNTATORI Liste con doppi puntatori typedef int TipoElemLista; struct StructLista { TipoElemLista info; struct StructLista *next; struct StructLista

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 12 ADT: Lista, Pila, Coda A. Miola Marzo 2008 http://www.dia.uniroma3.it/~java/fondinf2/ ADT: Lista, Pila, Coda 1 Contenuti!Tipo

Dettagli

Inserimento in una lista ordinata

Inserimento in una lista ordinata Inserimento in una lista ordinata Vogliamo inserire un nuovo elemento in una lista in cui gli elementi sono memorizzati in ordine crescente: Passo 1: creare un nuovo nodo della lista Passo 2: trovare il

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

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

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

PROGRAMMAZIONE I (A,B) - a.a Primo Appello 19 gennaio 2017

PROGRAMMAZIONE I (A,B) - a.a Primo Appello 19 gennaio 2017 Esercizio 1 PROGRAMMAZIONE I (A,B) - a.a. 2016-17 Primo Appello 19 gennaio 2017 Si scriva una funzione C che, dato un array a di dimensione dim e un numero naturale n tale che 1 n dim, restituisce il valore

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

Programmazione I - Laboratorio

Programmazione I - Laboratorio Programmazione I - Laboratorio Esercitazione 6 - Liste Gianluca Mezzetti 1 Paolo Milazzo 2 1. Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ mezzetti mezzetti di.unipi.it 2. Dipartimento

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

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

5. Quinta esercitazione autoguidata: liste semplici

5. Quinta esercitazione autoguidata: liste semplici 22 5. Quinta esercitazione autoguidata: liste semplici 5.1. Liste rappresentate mediante strutture e puntatori (LISTE1.C, LISTE2.C) Scrivere un programma che - costruisce una lista di k interi (con k letto

Dettagli

Soluzioni seconda prova intermedia del 30 gennaio 2006 temi 1 e 2. Siano date le seguenti definizioni di costanti e tipi in linguaggio C:

Soluzioni seconda prova intermedia del 30 gennaio 2006 temi 1 e 2. Siano date le seguenti definizioni di costanti e tipi in linguaggio C: Fondamenti Informatica B Soluzioni seconda prova intermedia del 30 gennaio 2006 temi 1 e 2 Esercizio 1 tema 1 Siano date le seguenti definizioni di costanti e tipi in linguaggio C: #define MAX_LENGTH 40

Dettagli

Fondamenti di Informatica

Fondamenti di Informatica 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

Dettagli

ALGORITMI E STRUTTURE DATI

ALGORITMI E STRUTTURE DATI ALGORITMI E STRUTTURE DATI Esercitazioni AndreA Orlandini http://www.dia.uniroma3.it/~orlandin/asd/ e-mail: orlandin@dia.uniroma3.it Orario di ricevimento: Martedì 14.00-16.00 Puntatori e Alberi, ABR StudentiDIA

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

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

E12 Esercizi su Strutture dati dinamiche in C

E12 Esercizi su Strutture dati dinamiche in C E12 Esercizi su Strutture dati dinamiche in C Esercizio 1. Si vuole realizzare una lista caratteri in C utilizzando una rappresentazione semplicemente collegata. Scrivere una struttura nodo che contiene

Dettagli

ADT STACK (PILA) Svariate applicazioni del concetto di stack:

ADT STACK (PILA) Svariate applicazioni del concetto di stack: Stack e Code Obiettivi: Introdurre l ADT Stack e l ADT Coda e le operazioni tipiche su esse Discuterne la realizzazione sequenziale (mediante vettori) e la realizzazione collegata (puntatori a strutture)

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

Algoritmi e Strutture di Dati A.A Esempio di prova scritta del 19 gennaio 2018 D.M CFU Libri e appunti chiusi Tempo = 2:00h

Algoritmi e Strutture di Dati A.A Esempio di prova scritta del 19 gennaio 2018 D.M CFU Libri e appunti chiusi Tempo = 2:00h Algoritmi e Strutture di Dati A.A. 2017-2018 Esempio di prova scritta del 19 gennaio 2018 D.M. 270-9CFU Libri e appunti chiusi Tempo = 2:00h Note (es: correzione veloce, eventuali indisponibilità, ecc.)...

Dettagli

Laurea In Ingegneria dell Informazione. Esercitazioni Guidate di Tecniche della Programmazione

Laurea In Ingegneria dell Informazione. Esercitazioni Guidate di Tecniche della Programmazione Laurea In Ingegneria dell Informazione Esercitazioni Guidate di Tecniche della Programmazione Note introduttive: 1) Le soluzioni agli esercizi e le versioni di programmi menzionate nel testo delle esercitazioni

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

FUNZIONI che operano su LISTE

FUNZIONI che operano su LISTE U N D I C E S I M A ESERCITAZIONE 2007/2008 L. MANDELLI FUNZIONI che operano su LISTE Sfruttando i tipi pelemento (puntatore ad un tipo elemento) e/o ELEMENTO codificare le seguenti funzioni che operano

Dettagli

FACOLTÀ DI INGEGNERIA

FACOLTÀ DI INGEGNERIA UNIVERSITÀ DEGLI STUDI DI PISA FACOLTÀ DI INGEGNERIA Tipi di Dati Comuni testa fondo Giuseppe Anastasi Anno Accademico 1999-2000 Tipi di Dati Comuni 1. Tipo di Dato Astratto Un tipo è individuato da due

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

Funzioni dipendenti dal tipo definite al momento dell'uso

Funzioni dipendenti dal tipo definite al momento dell'uso Nome File : Liste.h typedef char* Elem; typedef struct nodo* ListeP; /* premettiamo le funzioni che dipendono dal tipo e il cui codice sarà introdotto nel file di utilizzo della lista*/ int confr(elem

Dettagli

Strutture dati. Le liste

Strutture dati. Le liste Strutture dati Le liste Introduzione Una lista è una successione finita di valori di un tipo (insieme di valori e ordine). Come tipo di dato è qualificata dalle operazioni che ci si possono svolgere: inserimento

Dettagli

Linguaggio C. Esercizio 1

Linguaggio C. Esercizio 1 Linguaggio C Esercizi su puntatori e liste Walter Didimo (e-mail:didimo@dia.uniroma3.it) supplemento al Corso di Calcolatori Elettronici (Riccardo Torlone) 1 Esercizio 1 Siano p e q due puntatori a variabili

Dettagli

soluzioneluglio.txt 1. Scrivere una funzione che restituisce la data dinascita di un determinato studente.

soluzioneluglio.txt 1. Scrivere una funzione che restituisce la data dinascita di un determinato studente. Testo esercizio: Si supponga di avere a disposizione un vettore contenente l elenco degli alunni iscritti al Politecnico, con la relativa data di nascita. Ogni nome è separato dalla data dal carattere

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

INFORMATICA 2010/11 - CdL in FISICA TERZO APPELLO 8/09/2011: SOLUZIONI PROPOSTE

INFORMATICA 2010/11 - CdL in FISICA TERZO APPELLO 8/09/2011: SOLUZIONI PROPOSTE INFORMATICA 2010/11 - CdL in FISICA TERZO APPELLO 8/09/2011: SOLUZIONI PROPOSTE Scrivere in stampatello COGNOME, NOME e MATRICOLA su ogni foglio consegnato N.B.: In tutti gli esercizi viene valutata anche

Dettagli

Fondamenti di Informatica T-1, 2016/2017 Modulo 2. Prova d Esame 2A di Giovedì 26 Gennaio 2017 tempo a disposizione 2h

Fondamenti di Informatica T-1, 2016/2017 Modulo 2. Prova d Esame 2A di Giovedì 26 Gennaio 2017 tempo a disposizione 2h Avvertenze per la consegna: apporre all inizio di ogni file sorgente un commento contenente i propri dati (cognome, nome, numero di matricola) e il numero della prova d esame. Al termine, consegnare tutti

Dettagli

Alberi Binari Alberi Binari

Alberi Binari Alberi Binari Alberi Binari Alberi Binari Un albero binario è una collezione di elementi organizzati in modo non sequenziale secondo un grafo aciclico caratterizzato da Radice Due sotto-alberi (il sotto-albero destro

Dettagli

Laboratorio di Elementi di Architetture e Sistemi Operativi Soluzioni degli esercizi del 16 Maggio 2012

Laboratorio di Elementi di Architetture e Sistemi Operativi Soluzioni degli esercizi del 16 Maggio 2012 Laboratorio di Elementi di Architetture e Sistemi Operativi Soluzioni degli esercizi del 16 Maggio 2012 Esercizio 1. 1. Creare un file liste.c che contenga il codice per la gestione delle liste visto nella

Dettagli

PROGRAMMAZIONE 1 e LABORATORIO (A,B) - a.a Prova scritta del 10/01/2012 SOLUZIONI PROPOSTE

PROGRAMMAZIONE 1 e LABORATORIO (A,B) - a.a Prova scritta del 10/01/2012 SOLUZIONI PROPOSTE PROGRAMMAZIONE 1 e LABORATORIO (A,B) - a.a. 2011-2012 Prova scritta del 10/01/2012 SOLUZIONI PROPOSTE ESERCIZIO 1 (punti 5) Un albero discendente a destra (dad) è: una foglia un nodo con n figli ordinati

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

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

Progetto per il Laboratorio di Programmazione Un interprete per il linguaggio PINO. Modulo I: Le tavole dei simboli (TS)

Progetto per il Laboratorio di Programmazione Un interprete per il linguaggio PINO. Modulo I: Le tavole dei simboli (TS) Progetto per il Laboratorio di Programmazione Un interprete per il linguaggio PINO Modulo I: Le tavole dei simboli (TS) Stefano Guerrini A.A. 2002/03 Canale P-Z Versione del 20 giugno 2003 1 Modulo I:

Dettagli

Esercitazione 8. Corso di Tecniche di programmazione. Laurea in Ingegneria Informatica

Esercitazione 8. Corso di Tecniche di programmazione. Laurea in Ingegneria Informatica Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Esercitazione 8 Corso di Tecniche di programmazione Laurea in Ingegneria Informatica (Canale di Ingegneria delle Reti

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

Appunti senza pretese di P2+Lab: Pensare ricorsivamente, programmare iterativamente, parte II: Implementazione iterativa di Mergesort

Appunti senza pretese di P2+Lab: Pensare ricorsivamente, programmare iterativamente, parte II: Implementazione iterativa di Mergesort Appunti senza pretese di P2+Lab: Pensare ricorsivamente, programmare iterativamente, parte II: Implementazione iterativa di Mergesort Alessandro Panconesi DSI, La Sapienza via Salaria 113, piano terzo

Dettagli

Strutture dati concatenate

Strutture dati concatenate Strutture dati concatenate Strutture dati concatenate Le strutture concatenate sono utilizzate er la creazione e la gestione flessibile di variabili dinamiche Una struttura concatenata contiene almeno

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

Sistemi operativi A, Unix+C, 26/09/2017. Nome: Cognome: Matricola:

Sistemi operativi A, Unix+C, 26/09/2017. Nome: Cognome: Matricola: Sistemi operativi A, Unix+C, 26/09/2017 Nome: Cognome: Matricola: ESERCIZIO RELATIVO ALLA PARTE DI UNIX (3 punti) Si scriva lo pseudo-codice necessario a generare un albero binario di processi di profondità

Dettagli

Liste concatenate. Collezione ordinata di nodi. Carlo Paolo Simona. Anna. ciascun nodo contiene due riferimenti:

Liste concatenate. Collezione ordinata di nodi. Carlo Paolo Simona. Anna. ciascun nodo contiene due riferimenti: Liste concatenate Collezione ordinata di nodi head tail next next next next element element element element Ø Anna Carlo Paolo Simona ciascun nodo contiene due riferimenti: - un riferimento "element" a

Dettagli

Un esempio di mutua ricorsione

Un esempio di mutua ricorsione Inserimento in un ABR n-bilanciato Un esempio di mutua ricorsione con gli alberi bilanciati in altezza, proprietà più debole, si ottiene maggiore semplicità delle operazioni di ribilanciamento (niente

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

Aritmetica postfissa

Aritmetica postfissa Aritmetica postfissa Le espressioni aritmetiche sono normalmente scritte in notazione infissa, cioe in modo tale che i simboli delle operazioni binarie compaiono tra gli oggetti su cui operano. ESEMPIO:

Dettagli

Scritto di Algoritmi e s.d. (1o anno) 16 Gennaio 2004 TESTO E RISPOSTE

Scritto di Algoritmi e s.d. (1o anno) 16 Gennaio 2004 TESTO E RISPOSTE Scritto di Algoritmi e s.d. (1o anno) 16 Gennaio 2004 TESTO E RISPOSTE Esercizio 1 (punti 1 + 4 in prima approssimazione) Consideriamo il seguente codice C: typedef struct nodo * Alb; struct nodo { int

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

Prova di Algoritmi e s.d. (1o anno) 7 Febbraio TESTO e RISPOSTE

Prova di Algoritmi e s.d. (1o anno) 7 Febbraio TESTO e RISPOSTE Prova di Algoritmi e s.d. (1o anno) 7 Febbraio 2003 TESTO e RISPOSTE Esercizio 1 (punti 5 in prima approssimazione) Consideriamo alberi binari con insieme dei nodi NODI = N (l'insieme dei naturali). Riportiamo

Dettagli

Algoritmi e strutture dati

Algoritmi e strutture dati Algoritmi e strutture dati Argomenti Strutture dati elementari e loro implementazioni in Java: Vettori Liste Stack (Pile) Queue (Code) Esempi di applicazione Tipo di dato astratto Tipo di dato astratto

Dettagli

Laboratorio di Algoritmi e Strutture Dati

Laboratorio di Algoritmi e Strutture Dati Laboratorio di Algoritmi e Strutture Dati Aniello Murano http://people.na.infn.it people.na.infn.it/~murano/ Operazioni su Grafi: Inserimento e Cancellazione di un Nodo Possibili scenari Bisogna distinguere

Dettagli

Esercizio 1 Liste: calcolo del numero di elementi ripetuti in una lista

Esercizio 1 Liste: calcolo del numero di elementi ripetuti in una lista Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 11 Esercitazione: 27 gennaio 2005 Esercizi su liste, ricorsione, file. Scaletta Esercizio 1 Liste: calcolo del numero di

Dettagli

Esercizi Liste. Prof. Alessandro Campi

Esercizi Liste. Prof. Alessandro Campi Esercizi Liste Prof. Alessandro Campi Esercizio Si consideri una lista dinamica di interi, i cui elementi sono del tipo definito come di seguito riportato: typedef struct El { int dato; struct El *next;

Dettagli