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

Dimensione: px
Iniziare la visualizzazioe della pagina:

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

Transcript

1 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 tipo e e cosa contiene? Dichiararla e disegnarla, sapendo che aux->info e il campo info contenente 21 e allora cosa contiene aux->next?? Tecniche della Programmazione, M.Temperini, - Liste Concatenate 2 1/28

2 LISTA "struct e puntatori": costruzione di una lista, usando instestalista() n volte TipoLista costrlista (int ) { TipoLista reslista ; /* 0) */ int i; ; for (i=1; i<=n; i++) { printf ( nuovo elem (intero): ); return ; /* 1) */ ; /* 2) */ Tecniche della Programmazione, M.Temperini, - Liste Concatenate 2 2/28

3 LISTA "struct e puntatori": FUNZIONE di inserimento in lista, in testa instestalista(&lis, 12) ^ lis memoria 21 la lista (21, 14) diventi in 14 void instestalista(tipolista, TipoElem ) { TipoNodo ; NULL nuovo = malloc(sizeof(tiponodo)); nuovo = el; nuovo = *plis; /* 3.1 */ ; /* 3.2 */ return; Tecniche della Programmazione, M.Temperini, - Liste Concatenate 2 3/28

4 LISTA "struct e puntatori": costruzione di una lista, usando instestalista() TipoLista costrlista (int n) { TipoLista reslista = NULL; /* 0) */ int i; TipoElem dato; for (i=1; i<=n; i++) { printf ( nuovo elem (intero): ); leggielem(&dato); /* o magari scanf("%d", &dato); se sono interi */ /* 1) */ instestalista(&reslista, dato); /* 2) */ return reslista; lis Tecniche della Programmazione, M.Temperini, - Liste Concatenate 2 4/28

5 LISTA "struct e puntatori": Tecnica di inserimento in coda lis ^ ^ 7 21 *** ** 14 NULL memoria 9 NULL Immaginiamo di aver gia costruito la lista 7, 21 e 14: aggiungiamo 9 CASO LISTA VUOTA (lis==null) CASO GENERICO (list!=null) lis = malloc( ); lis ; lis->next = ; ultimo ** *** ultimo->next = malloc(sizeof(tiponodo)); ultimo = ultimo->info = ; lis NULL Tecniche della Programmazione, M.Temperini, - Liste Concatenate 2 5/28

6 costruzione lista di n nodi interi (con inserimento in coda)...typedef int TipoElem;... TipoLista costrcoda (int n) { TipoLista ; TipoNodo * ; int i; TipoElem ; 1) lettura dato restituisce alla funzione chiamante il puntatore al nodo iniziale della lista costruita in memoria 2) inserimento CASO LISTA 3) 4) 2.1) assegnazione ultimo (con assestamento ultimo n-1 volte Tecniche della Programmazione, M.Temperini, - Liste Concatenate 2 6/28

7 lista di n nodi interi (con inserimento in coda): primo caso - lista vuota...typedef int TipoElem;... TipoLista costrcoda (int n) { TipoLista reslista = NULL; int i; TipoNodo * ultimo; TipoElem dato; if (n<=0) ; printf( primo elem? ); leggielem( ); /* 1)*/ reslista = ; /* 2) */ reslista->info = ; reslista->next = ; reslista ultimo = reslista; ultimo 7 NULL... /* resto della costruzione */ return reslista; Tecniche della Programmazione, M.Temperini, - Liste Concatenate 2 7/28

8 lista di n nodi interi (con inserimento in coda): caso generico...typedef int TipoElem;... TipoLista costrcoda (int n) { reslista TipoLista reslista = NULL; TipoNodo * ultimo; int i; TipoElem dato; ultimo if (n<=0) return NULL;... /* 1)*/... /* 2) */ reslista->info = dato; reslista->next = NULL; ultimo = reslista; /*ultimo */ for (i=0; i<n-1; i++) { 9 printf( elem? ); /* 3) */ scanf( %d, ); ultimo = malloc(sizeof(tipodato)); /* 4) */ ultimo = ultimo->next; ultimo->info = ; ultimo->next = ; return reslista; si nota che tutti i NULL inseriti nei campi next, a meno dell'ultimo, vengono cancellati da altro contenuto, praticamente appena dopo essere stati asssegnati... il cambiamento nella prossima slide evita queste assegnazioni inutili Tecniche della Programmazione, M.Temperini, - Liste Concatenate 2 8/28

9 costruzione lista di n nodi interi (con inserimento in coda) - modifica Nella versione attuale sovrascriviamo, ad ogni inserimento di un nuovo nodo, il campo next dell'elemento appena aggiunto: se ci limitiamo ad assegnare NULL al campo next del solo ultimo nodo immesso (cioe' eseguire l'assegnazione ad ultimo->next appena usciti dal ciclo di inserimenti), risparimiamo un po' di assegnazioni reslista-info = dato; reslista->next = NULL; ultimo = reslista; reslista ultimo 7 for (i=0; i<n-1; i++) { printf( primo elem? ); scanf( %d, &dato); ultimo->next = malloc(sizeof(tipodato)); ultimo = ultimo->next; ultimo->info = dato; ultimo->next = NULL; return reslista; 9 NULL Tecniche della Programmazione, M.Temperini, - Liste Concatenate 2 9/28

10 Es. funzione che legge una riga e produce la lista dei suoi caratteri...typedef char TipoElem;... TipoLista costrcoda2 () { TipoLista ris = NULL; TipoNodo * ultimo; TipoElem dato; Assumiamo almeno un carattere diverso da \n in input I = qwerty\n ris q w 1) lettura primo car. (dato) 2) 3) lettura secondo (dato) 4) 5) 6) return ris; int main () {... list = stampalista (list);... y NULL Tecniche della Programmazione, M.Temperini, - Liste Concatenate 2 10/28

11 Es. funzione che legge una riga e produce la lista dei suoi caratteri...typedef char TipoElem;... TipoLista costrcoda2 () { TipoLista ris = NULL; TipoNodo * ultimo; TipoElem dato; scanf( %c, &dato); /* 3) (e' la 'w')*/... Tecniche della Programmazione, M.Temperini, - Liste Concatenate 2 11/28

12 Es. funzione che legge una riga e produce la lista dei suoi caratteri...typedef char TipoElem;... TipoLista costrcoda2 () { TipoLista ris = NULL; TipoNodo * ultimo; TipoElem dato; int main () {... list = costrcoda2(); stampalista (list);... q printf( scrivi una riga ); /* 1) */ scanf( %c, &dato); ris = malloc(sizeof(tipodato)); ris->info=dato; ultimo=ris; scanf( %c, &dato); /* 3) (e' la 'w')*/ while(dato!= \n ) { ultimo->next = ; ultimo = ; ultimo ; scanf( %c, ); w e r t y \n NULL Tecniche della Programmazione, M.Temperini, - Liste Concatenate 2 12/28

13 Tecnica del record generatore Quindi non si puo fare ultimo->next=malloc( ).Per questo bisogna scrivere un codice (istruzioni) per un caso e altro codice, diverso, per il secondo caso. Pero, possiamo fare in modo che ultimo ci sia sempre, unificando i due casi: se facciamo cosi', le medesime istruzioni funzionano in entrambi i casi. pgen = puntatore al record generatore RECORD GENERATORE = record fittizio, che non fara parte integrante della lista ma esistera solo durante la sua Durante la costruzione della lista il RG e il primo della lista (ma non contiene informazioni rilevanti nel campo info). Al termine della manipolazione della lista (costruzione in questo caso) il RG viene deallocato. All inizio (lista vuota) viene creato il RG; e ultimo punta Adesso possiamo usare sempre il codice del Tecniche della Programmazione, M.Temperini, - Liste Concatenate 2 13/28

14 costruzione lista con inserimento in coda (tecnica del rec. gen) 1) allocazione record generatore (RG) 2) ultimo = 3) lettura dato (elemento da inserire) 4) inserimento l ultimo 4.1) 4.2) 4.3) 5) lettura prossimo elemento mentre non finito (es. dato!= \n ) 6) chiusura lista 7) ris = pgen->next (il vero primo elemento della lista) 8) eliminazione Tecniche della Programmazione, M.Temperini, - Liste Concatenate 2 14/28

15 costruzione lista con inserimento in coda (tecnica del record generatore) lista da riga di testo in input 1/3 typedef char TipoElem; struct strutturalista { TipoElem info; typedef struct strutturalista ; typedef TipoNodo * TipoLista costruiscilistacoda() { TipoLista ris ; TipoNodo * ultimo, *pgen; TipoElem dato; Tecniche della Programmazione, M.Temperini, - Liste Concatenate 2 15/28

16 costruzione lista con inserimento in coda (tecnica del record generatore) lista da riga di testo in input 2/3 TipoLista costruiscilistacoda() { TipoLista ris = NULL; TipoNodo * ultimo, *pgen; TipoElem dato; /* 1) */ pgen = if (pgen==null) { printf ( errore in allocazione del RG\n ); return NULL; /* 2) */ ultimo = printf( scrivi una riga\n ); scanf(, ); /* 3) */ while ( ) { /* 4, 5; INS. sempre caso GENERICO */ ultimo Tecniche della Programmazione, M.Temperini, - Liste Concatenate 2 16/28

17 costruzione lista con inserimento in coda (tecnica del record generatore) lista da riga di testo in input 3/3 TipoLista costruiscilistacoda() {... ultimo = pgen; printf( scrivi una riga\n ); scanf( %c,&dato); while (dato!= \n ) { ultimo->next = malloc ( ); ultimo=ultimo->next; ultimo->info = dato; scanf( %c,&dato); ultimo->next = ; ris = ; free (pgen); return ris; Tecniche della Programmazione, M.Temperini, - Liste Concatenate 2 17/28

18 LISTA "struct e puntatori": deallocazione lista - 1/3 - programma che legge e costruisce due liste, lis, lis2, le usa e poi le dealloca dalla memoria (lis con codice nella main(); lis2 con una chiamata di funzione #include int main() { TipoLista lis, lis2;... /* costruzione lis */... /* costruzione lis2 */ /* deallocazione prima lista */ free(lis); ^ 14 NULL 21 memoria 7 No, non e' questa la soluzione per considerazioni identiche a quelle fatte a proposito di deallocazione del primo elemento di una lista Tecniche della Programmazione, M.Temperini, - Liste Concatenate 2 18/28

19 LISTA "struct e puntatori": deallocazione lista - 2/ /* deallocazione prima lista */ while( ) { eliminazione (primo) elem. puntato da lis aux=lis; lis=lis->next; free(aux); mentre lis non NULL /* deallocazione seconda lista mediante chiamata di funzione */ /* side effect previsto */... FINE return ; Tecniche della Programmazione, M.Temperini, - Liste Concatenate 2 19/28

20 LISTA "struct e puntatori": deallocazione lista - 3/3 - void deallocalista(tipolista ) { TipoNodo ; while(*plis) { aux = ; *plis = free(aux); return; Tecniche della Programmazione, M.Temperini, - Liste Concatenate 2 20/28

21 LISTA "struct e puntatori": Funzione di Inserimento in coda - 1/6 - caso generale nel caso generico (lista non vuota) l'inserimento in coda non provoca una variazione del puntatore all'inizio della lista; MA NEL CASO DI INSERIMENTO IN LISTA VUOTA, SI'; quindi la chiamata da effettuare e' Algoritmo A) CASO GEN. ultimo ** 14 NULL B) CASO LVUOTA. ultimo ** Tecniche della Programmazione, M.Temperini, - Liste Concatenate 2 21/28?

22 LISTA "struct e puntatori": Funzione di Inserimento in coda - 2/6 - posizionamento puntatore ultimo ^ ^ caso generale ^ 7 21 *** memoria 14 NULL posizionamento di ultimo (punto A) TipoNodo * aux; aux=lis; while (aux) aux = aux->next; /* ora chi punta sull'ultimo nodo? */ l'unico problema e' che nel caso LISTA VUOTA se si inizializza aux con aux=lis, poi non esiste aux->next (il nodo successore) in quanto non esiste nemmeno il nodo puntato da aux... Per ovviare a questo problemino si usa la tecnica del RG... Tecniche della Programmazione, M.Temperini, - Liste Concatenate 2 22/28

23 (applicazione tecnica del Record Generatore (RG) lis ^ q w e NULL TipoNodo * aux; aux = ; while (!=NULL) aux = ; /* ora aux punta sull'ultimo nodo */ Tecniche della Programmazione, M.Temperini, - Liste Concatenate 2 23/28

24 LISTA "struct e puntatori": Funzione di Inserimento in coda - 3/6 - void insincoda(tipolista * plis, TipoElem el) { (Algoritmo che unifica i casi lista vuota e generico con la tecnica del RG) 0) allocazione record generatore (RG) e suo posizionamento in testa alla lista; 1=A)inizializzazione aux 2=B) aggiunta dopo *ultimo (il nodo puntato da ultimo) 3) sistemazione *plis (side effect, assegnandogli pgen->next) 4) chiusura lista - 5) eliminazione Tecniche della Programmazione, M.Temperini, - Liste Concatenate 2 24/28

25 LISTA "struct e puntatori": Funzione di Inserimento in coda - 4/6 - void insincoda(tipolista * plis, TipoElem el) { TipoNodo * aux *ultimo, *pgen; pgen = malloc(sizeof(tiponodo)); /* 0 */ if (!pgen) { pgen->next = /* 0 */ aux = ; /* 1 */ while( ) aux = aux->next; = aux; /* 1 - ultimo punta o l'ultimo nodo, se c'e', o il RG */ /* 2 inserimento in coda */ /* resto algoritmo */ return; Tecniche della Programmazione, M.Temperini, - Liste Concatenate 2 25/28

26 LISTA "struct e puntatori": Funzione di Inserimento in coda - 5/6 - void insincoda(tipolista * plis, TipoElem el) { TipoNodo * aux *ultimo, *pgen; pgen = malloc(sizeof(tiponodo)); /* 0 */ if (!pgen) { printf ("... eeeekkkk!!!!\n"); return; pgen-> next = *plis; /* 0 */ aux = pgen; while(aux->next) /* 1 */ aux = aux->next; ultimo = aux; /* */ /* 2 - inserimento */ /* 3 sistemazione *plis */ /* 4 eliminazione RG */ return; Tecniche della Programmazione, M.Temperini, - Liste Concatenate 2 26/28

27 LISTA "struct e puntatori": Funzione di Inserimento in coda - 6/6 - void insincoda(tipolista * plis, TipoElem el) { TipoNodo * aux *ultimo, *pgen; pgen = malloc(sizeof(tiponodo)); /* 0 */ if (!pgen) { printf ("... eeeekkkk!!!!\n"); return; pgen-> next = *plis; /* 0 */ aux = pgen; while(aux->next) /* 1 */ aux = aux->next; ultimo = aux; /* 1 - ultimo punta... */ ultimo->next = malloc(sizeof(tiponodo)); /* 2 */ if (ultimo->next == NULL) printf("... problemi in alloc. nuovo nodo */ else { ultimo->next->info = el; ultimo->next->next = NULL; Tecniche della Programmazione, M.Temperini, - Liste Concatenate 2 27/28

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

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

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

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

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

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 Tecniche di Programmazione. 4. Quarta esercitazione autoguidata: liste concatenate rappresentate mediante struct e puntatori

Esercitazioni di Tecniche di Programmazione. 4. Quarta esercitazione autoguidata: liste concatenate rappresentate mediante struct e puntatori Esercitazioni di Tecniche di Programmazione 4. Quarta esercitazione autoguidata: liste concatenate rappresentate mediante struct e puntatori due avvertenze: 1) Le soluzioni agli esercizi, le versioni di

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

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

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

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

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

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

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

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

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

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

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

dott. Sabrina Senatore

dott. Sabrina Senatore dott. Sabrina Senatore Dipartimento di Informatica Riepilogo strutture 1 Sintassi della dichiarazione: typedef struct nome_tipo { Dichiarazione dei campi nome_tipo; typedef struct point{ int x; int y;

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 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

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

IL CONCETTO DI LISTA!

IL CONCETTO DI LISTA! Liste semplici Obiettivi: Discutere la realizzazione collegata (puntatori a strutture) di liste semplici Introdurre l ADT lista semplice e le operazioni tipiche su essa 1 IL CONCETTO DI LISTA Una lista

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

Il linguaggio C. Puntatori e dintorni

Il linguaggio C. Puntatori e dintorni Il linguaggio C Puntatori e dintorni 1 Puntatori : idea di base In C è possibile conoscere e denotare l indirizzo della cella di memoria in cui è memorizzata una variabile (il puntatore) es : int a = 50;

Dettagli

Prof. E. Occhiuto INFORMATICA 242AA a.a. 2010/11 pag. 1

Prof. E. Occhiuto INFORMATICA 242AA a.a. 2010/11 pag. 1 Operazioni sulle liste Definiamo una serie di procedure e funzioni per operare sulle liste. Usiamo liste di interi per semplicità, ma tutte le operazioni sono realizzabili in modo del tutto analogo su

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

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

Diversi modi di rappresentare sequenze di elementi

Diversi modi di rappresentare sequenze di elementi Liste È molto comune dover rappresentare sequenze di elementi tutti dello stesso tipo e fare operazioni su di esse. Esempi: sequenza di interi (23 46 5 2 3) sequenza di caratteri ( x r f ) sequenza di

Dettagli

Esercitazioni di Prog. II (funzioni su insiemi) Chiara Petrioli

Esercitazioni di Prog. II (funzioni su insiemi) Chiara Petrioli Esercitazioni di Prog. II (funzioni su insiemi) Chiara Petrioli Esercizi per la manipolazione di insiemi (rappresentati tramite liste) Insiemi.c /*Questo file include i prototipi e le definizioni di specifiche

Dettagli

Corso di Informatica A.A

Corso di Informatica A.A Corso di Informatica A.A. 2009-2010 Lezione 15 Corso di Informatica 2009-2010 Lezione 15 1 Liste concatenate Liste concatenate Una lista concatenata costituisce un metodo molto utile per immagazzinare

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

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

Liste collegate. Liste

Liste collegate. Liste Liste È molto comune dover rappresentare sequenze di elementi tutti dello stesso tipo e fare operazioni su di esse. Esempi: sequenza di interi (23 46 5 28 3) sequenza di caratteri ( x r f ) sequenza di

Dettagli

- esercizio riepilogativo sulla gestione di liste realizzate mediante record e puntatori

- esercizio riepilogativo sulla gestione di liste realizzate mediante record e puntatori Lezione 25 ricorsione su iste - interpretazione induttiva di una ista - una ista e' un eemento seguito da una ista di eementi - non proprio, ma quasi - esercizio riepiogativo sua gestione di iste reaizzate

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

Allocazione Dinamica della memoria

Allocazione Dinamica della memoria Allocazione dinamica Allocazione Dinamica della memoria I Il C mette a disposizione delle primitive per la gestione dinamica della memoria, grazie all utilizzo di alcune funzioni messe a disposizione dalla

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

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

7. Settima esercitazione autoguidata: alberi binari

7. Settima esercitazione autoguidata: alberi binari 7. Settima esercitazione autoguidata: alberi binari 31 7.1. Costruzione di un albero (ALBERI1.C) Scrivere un programma che - riceve il nome di un file contenente la rappresentazione parentetica di un albero

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

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 Liste StudentiDIA

Dettagli

Dispensa 18 CORSO DI PROGRAMMAZIONE A.A CORSO DI LAUREA IN INGEGNERIA E SCIENZE INFORMATICHE CESENA. Laboratori

Dispensa 18 CORSO DI PROGRAMMAZIONE A.A CORSO DI LAUREA IN INGEGNERIA E SCIENZE INFORMATICHE CESENA. Laboratori ORSO I LURE IN INGEGNERI E SIENZE INFORMTIHE ESEN ORSO I PROGRMMZIONE.. 2016-17 ispensa 18 Laboratori ott. Mirko Ravaioli e-mail: mirko.ravaioli@unibo.it http://www.programmazione.info orso di Programmazione..

Dettagli

Fondamenti di Programmazione

Fondamenti di Programmazione A.A. 08/09 Fondamenti di Programmazione (canale E-O) Docente: Prof.ssa Tiziana Calamoneri calamo@di.uniroma1.it Esercitatore: Dott. Roberto Petroccia petroccia@di.uniroma1.it Pagina del corso: http://twiki.di.uniroma1.it/twiki/view/programmazione1/eo/webhome

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

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

#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

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

Il linguaggio C Strutture

Il linguaggio C Strutture Il linguaggio C Strutture Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ Linguaggio C -- Strutture 2 Ringraziamenti Questi

Dettagli

Il linguaggio C Strutture

Il linguaggio C Strutture Il linguaggio C Strutture Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ Copyright Mirko Viroli Copyright 2017, 2018 Moreno

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

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

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

Esercizi. La funzione swapint() primo tentativo

Esercizi. La funzione swapint() primo tentativo Politecnico di Milano Esercizi Puntatori, struct con campi puntatore, puntatori a struct, rapporto tra array e puntatori. FUNZIONI Passaggio di parametri per indirizzo, passaggio di array. #include

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

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

Una breve introduzione all implementazione in C di algoritmi su grafo

Una breve introduzione all implementazione in C di algoritmi su grafo Una breve introduzione all implementazione in C di algoritmi su grafo A cura di Gianmaria Leo Introduzione La lezione è un introduzione a concetti e strumenti che permettono l implementazione di algoritmi

Dettagli

L'Allocazione Dinamica della Memoria nel linguaggio C

L'Allocazione Dinamica della Memoria nel linguaggio C L'Allocazione Dinamica della Memoria nel linguaggio C Prof. Rio Chierego riochierego@libero.it http://www.riochierego.it/informatica.htm Sommario Questo documento tratta l'allocazione dinamica della memoria

Dettagli

Prova di Algoritmi e s.d. (1o anno) 17 Settembre TESTO e RISPOSTE

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

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

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

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

Introduzione al C. Lezione 4 Allocazione dinamica della memoria. Rossano Venturini. Pagina web del corso

Introduzione al C. Lezione 4 Allocazione dinamica della memoria. Rossano Venturini. Pagina web del corso Introduzione al C Lezione 4 Allocazione dinamica della memoria Rossano Venturini rossano@di.unipi.it Pagina web del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start Lezioni di ripasso

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

Gestione dinamica della memoria

Gestione dinamica della memoria Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2016-2017 Gestione dinamica della memoria Pietro Di Lena - pietro.dilena@unibo.it A pessimistic programmer sees the array as half empty.

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

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

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

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

Tecniche della Programmazione, lez.15

Tecniche della Programmazione, lez.15 Tecniche della Programmazione, lez.15 - Richiamo su (perche' serono molto da qui in poi) - scansione di ay con puntatori - Varie applicazioni dell uso di puntatori - Scansione e ricerca in ay - Riuso di

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

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

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

Fondamenti di Informatica AA 2016/2017

Fondamenti di Informatica AA 2016/2017 Fondamenti di Informatica AA 2016/2017 Eng. Ph.D. Michela Paolucci DISIT Lab http://www.disit.dinfo.unifi.it Department of Information Engineering, DINFO University of Florence Via S. Marta 3, 50139, Firenze,

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

INFORMATICA - CdL in FISICA. COMPITO del 28/05/2003 SOLUZIONI PROPOSTE

INFORMATICA - CdL in FISICA. COMPITO del 28/05/2003 SOLUZIONI PROPOSTE INFORMATICA - CdL in FISICA COMITO del 28/5/23 SOLUZIONI ROOSTE ESERCIZIO 1 Indicare i valori stampati dal seguente programma C. #include main() int *p, **q, x=, y=; p = &x; q = &p; *q = &y;

Dettagli

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

Fondamenti di Informatica, Ingegneria Elettronica, Università La Sapienza Roma. aa R. Beraldi struct tipocoda TipoElemCoda coda[maxcoda]; int primo, ultimo; ; typedef struct tipocoda TipoCoda; void InCoda(TipoCoda *pc, TipoElemCoda v) if (TestCodaPiena(*pc)) printf("errore: CODA PIENA\n"); else

Dettagli

Algoritmi e Strutture di Dati I 1. Algoritmi e Strutture di Dati I Massimo Franceschet francesc

Algoritmi e Strutture di Dati I 1. Algoritmi e Strutture di Dati I Massimo Franceschet  francesc Algoritmi e Strutture di Dati I 1 Algoritmi e Strutture di Dati I Massimo Franceschet http://www.sci.unich.it/ francesc Algoritmi e Strutture di Dati I 2 Oggetti e puntatori Un oggetto è un area di memoria

Dettagli

Struct e liste concatenate

Struct e liste concatenate Struct e liste concatenate Alessio Orlandi 20 aprile 2010 Tipi complessi Tipi scalari: int, float,... : singolo elemento Contenitori per collezioni di oggetti: array. Quindi: array di interi, array di

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

Hash Table. Hash Table

Hash Table. Hash Table Hash Table La ricerca di un elemento su una lista (semplice o doppia) presenta una complessità di tipo O(n), dato che occorre scandire (al più) l intera lista per poter trovare l elemento desiderato. Le

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

L albero e un tipo astratto di dati usato per rappresentare relazioni gerarchiche.

L albero e un tipo astratto di dati usato per rappresentare relazioni gerarchiche. Lezioni di C L albero e un tipo astratto di dati usato per rappresentare relazioni gerarchiche. qstruttura del file system qalbero genealogico qorganigramma qalbero di decisione q... s=6*8+((2+42)*(5+12)+987*7*123+15*54)

Dettagli

Unità Didattica 4 Linguaggio C. Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo.

Unità Didattica 4 Linguaggio C. Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo. Unità Didattica 4 Linguaggio C Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo. 1 Vettori Struttura astratta: Insieme di elementi dello stesso tipo, ciascuno individuato da un indice;

Dettagli

L'allocazione dinamica della memoria

L'allocazione dinamica della memoria L'allocazione dinamica della memoria Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino I puntatori Le variabili di tipo puntatore permettono di accedere alla memoria

Dettagli

LISTE CONCATENATE. In Pascal un tipo primitivo "lista concatenata" non esiste. Esso può essere definito utilizzando un tipo puntatore.

LISTE CONCATENATE. In Pascal un tipo primitivo lista concatenata non esiste. Esso può essere definito utilizzando un tipo puntatore. LISTE CONCATENATE In Pascal un tipo primitivo "lista concatenata" non esiste. Esso può essere definito utilizzando un tipo puntatore. REALIZZAZIONE RICORSIVA ELEMENTARE unit lists; interface type elemtype

Dettagli

L'allocazione dinamica della memoria

L'allocazione dinamica della memoria L'allocazione dinamica della memoria Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino I puntatori Le variabili di tipo puntatore permettono di accedere alla memoria

Dettagli

PARTE

PARTE Programmazione CdS in Matematica Appello d esame 24 Settembre 2008 Nome.. Cognome... Matricola.. INDICARE SUBITO NOME, COGNOME, E MATRICOLA NON è permesso (pena espulsione) usare la calcolatrice e consultare

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

Esercizio (o esempio?)

Esercizio (o esempio?) Esercizio (o esempio?) programma che legge un intero n e n double; li memorizza in un array dinamico esatto calcola e stampa minimo, massimo e media dei double #include 1) Lettura e memorizzazione

Dettagli

Informatica A (per gestionali) A.A. 2004/2005. Esercizi di programmazione C Funzioni: passaggio di parametri per indirizzo, passaggio di array.

Informatica A (per gestionali) A.A. 2004/2005. Esercizi di programmazione C Funzioni: passaggio di parametri per indirizzo, passaggio di array. Informatica A (per gestionali) A.A. 2004/2005 Esercizi di programmazione C Funzioni: passaggio di parametri per indirizzo, passaggio di array. Indice 1 Funzioni: passaggio di parametri per indirizzo; puntatori...3

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

Rappresentazione collegata mediante puntatori di una lista

Rappresentazione collegata mediante puntatori di una lista Rappresentazione collegata mediante puntatori di una lista 1 Rappresentazione collegata di una lista Gli elementi di una lista possono essere rappresentati mediante delle struct contenenti, oltre al dato

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 III appello 6 settembre 2013 Matricola Cognome Nome Istruzioni Durata prova: 1h 30 LE RISPOSTE

Dettagli

Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 8 Esercitazione: 11 gennaio 2006 Esercizi su strutture dinamiche

Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 8 Esercitazione: 11 gennaio 2006 Esercizi su strutture dinamiche Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 8 Esercitazione: 11 gennaio 2006 Esercizi su strutture dinamiche Esercizio 1 Liste: calcolo del numero di elementi ripetuti

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