cons: L E L (...), e (e,...) Operatori tradizionali sulle liste car: (e,...) cdr: What s LISTE? null: () TRUE (...) FALSE Una lista e' una
|
|
- Giacinto Santoro
- 4 anni fa
- Visualizzazioni
Transcript
1 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 (...), e (e,...) ) Operatori tradizionali sulle liste car: (e,...) e null: () TRUE (...) FALSE cdr: Tecniche della Programmazione, M.Temperini, Introduzione alla gestione di liste 1/24
2 Rappresentazione concreta di LISTE DOMINI ---> tipi concreti; OPERAZIONI ---> funzioni void testalista Bool testlistavuota Bool ---> Bool (approccio libro: il tipo Bool e int con #define TRUE 1 #define FALSE 0) RAPPRESENTAZIONE in memoria (valori di TipoLista, cioe come e` fatta una variabile TipoLista lis ) lis lis lis oggetto di tipo TipoElem Tecniche della Programmazione, M.Temperini, Introduzione alla gestione di liste 2/24
3 Rappresentazione di LISTA mediante array supponendo di aver gia' definito typedef... TipoElem TipoLista va definito come un tipo "array-di-tipoelem" e se definiamo una variabile TipoLista lis; questa sara' un array allocato staticamente o dinamicamente a seconda dei dettagli della definizione di TipoLista lis? Allocazione Allocazione memoria - - (inserimenti ed) eliminazioni con spostamenti (l'ordine conta...) - meno limitazioni sulla memoria (gestione piu' efficiente: si spreca meno memoria e quando ne serve se ne alloca altra - se possibile) lis? lis? - Tecniche della Programmazione, M.Temperini, Introduzione alla gestione di liste 3/24
4 Rappresentazione di LISTA mediante struct e puntatori supponendo di aver gia' definito typedef... TipoElem LISTA = sequenza di ; NODO = oggetto (di tipo TipoNodo) composto da - elemento info - puntatore al (next e' di tipo "puntatore a NODO") TipoLista list 7? Come e fatta una variabile TipoLista?? ^ 4 ^^ TIPO CONCRETO PER IL NODO struct { TipoElem ; struct strutturalista * ; ; typedef struct strutturalista... Tecniche della Programmazione, M.Temperini, Introduzione alla gestione di liste 4/24
5 Rappresentazione di LISTA mediante struct e puntatori: TIPOLISTA TipoLista ^^^ list 7 ^ TIPO CONCRETO PER LA LISTA 4 ^^ typedef TipoNodo * TipoLista Una variabile di tipo TipoLista e' un al primo nodo di. lista vuota TipoLista list Tecniche della Programmazione, M.Temperini, Introduzione alla gestione di liste 5/24
6 LISTA "struct e puntatori": allocazione di nodi in lista #include <stdio.h> e <stdlib.h> def. TipoElem (int), TipoNodo e TipoLista TipoLista lis lis = malloc(sizeof(tiponodo)); 1 2 lis ^^ ^^ 4 2 aux memoria lis->next = = 3 5 aux->next TipoNodo *aux; puntatore ausiliario (non rappresenta una lista, ma serve solo a puntare nodi durante il lavoro quindi non viene definito di tipo TipoLista ma di tipo puntatore a TipoNodo 4 aux = ; aux->next = aux = aux-> aux-> 6 Tecniche della Programmazione, M.Temperini, Introduzione alla gestione di liste 6/
7 LISTA "struct e puntatori": alcune funzioni Bool testlistavuota (TipoLista l) { ); lis ^ ^ 7 memoria void initlista(tipolista *plis) { plis = ; return; /* ma non ha senso farlo su una lista gia' costruita (non vuota) */ 14 ^^ ^. elem 7 void testalista ( ) { if (testlistavuota(l)) ; else return; testalista(lis, &elem) l ^ pel ^. Tecniche della Programmazione, M.Temperini, Introduzione alla gestione di liste 7/24
8 LISTA "struct e puntatori": eliminazione primo elemento (cdr) TipoLista lis; /* per deallocare (eliminare) il primo elemento */ lis ^ ^? 7 memoria free(lis); ^^ 14 Tecniche della Programmazione, M.Temperini, Introduzione alla gestione di liste 8/24
9 LISTA "struct e puntatori": eliminazione primo elemento (cdr) - COSI' SI' lis memoria ^ 7 TipoLista lis; free(paux); ; /* puntatore ausiliario per puntare il nodo da eliminare, prima di cambiare lis */ ; TipoNodo * paux;... paux ^^ 14 Si', e' questa la soluzione! Tecniche della Programmazione, M.Temperini, Introduzione alla gestione di liste 9/24
10 LISTA "struct e puntatori": eliminazione primo elemento (cdr) TipoLista lis; lis memoria paux = lis; TipoNodo * paux; ^ 7 lis = lis->next; free(paux); /* paux = */ se serve... ^^ E ora funzione che elimina il primo elemento di una lista 14 Tecniche della Programmazione, M.Temperini, Introduzione alla gestione di liste 10/24
11 LISTA "struct e puntatori": scansione lista - 1/2 - Scansione di una lista = si esegue (almeno) un operazione su ciascun nodo della lista (es. aggiungere 1) list * * list= ; list->info list= ; list-> ; list= ; BASTA (list==) Tecniche della Programmazione, M.Temperini, Introduzione alla gestione di liste 11/24
12 LISTA "struct e puntatori": scansione lista - 2/2 - esempio: aggiungere 1 a tutti i nodi... int main() { TipoLista lis; TipoNodo * paux;... paux = lis; while (paux) { cosi' lis rimane sul primo lis memoria void stampalista (TipoLista l) ){{ TipoNodo * paux = l; while (paux) { stampaelem(paux->info); ; return esempio: stampa void stampaelem (TipoElem e) { /* supponendo interi, come negli esempi */ return Tecniche della Programmazione, M.Temperini, Introduzione alla gestione di liste 12/24
13 LISTA "struct e puntatori": a proposito di stampalista Gran parte delle funzioni che gestiscono TipoLista sono tali da poter e dover rimanere uguali al cambiare di TipoELem. Ad esempio se TipoElem fosse una lista di VOLI, provvisto che stampaelem() avesse un'implementazione consona, come la funzione di stampa vista prima potrebbe rimanere uguale. inoltre:?va bene la seguente implementazione di stampalista()?... void stampalista (TipoLista l) { l * while (l) { ** stampaelem(l->info); *** l = l->next; return stampalista(lis) lis * Tecniche della Programmazione, M.Temperini, Introduzione alla gestione di liste 13/24
14 LISTA "struct e puntatori": scansione per ricerca in lista TipoNodo * cercainlista ( ) { /* cerca el in l e restituisce il puntatore al nodo in cui el si trova (oppure ) ALGORITMO - scansione con paux; - per ogni nodo *paux {{se paux->info==el si assegna trovato=1 */ ; cercainlista(lis,12) ; lis * while( ) if (uguali(paux->info, el)) trovato = else return paux; Tecniche della Programmazione, M.Temperini, Introduzione alla gestione di liste 14/24
15 LISTA "struct e puntatori": scansione per ricerca in lista (variazione) TipoNodo * { /* implementazione senza far uso di paux ALGORITMO - scansione con il parametro formale l stesso; - per ogni nodo *l {{se l->info==el si assegna trovato=1 */ cercainlista(lis,12) * l * ** *** lis ** * /* questo cambiamento di l non ci spaventa, perche tutto rimane confinato nel RDA e lis non cambia */ *** Tecniche della Programmazione, M.Temperini, Introduzione alla gestione di liste 15/24
16 LISTA "struct e puntatori": inserimento in lista, in testa - algoritmo 7 TipoLista list; TipoNodo *nuovonodo; nuovonodo list 3.1) 1) allocazione nuovonodo 2) assegnazione ) far diventare il primo nodo successore del nuovonodo 3.2) far diventare list puntatore al vero primo nodo della lista Tecniche della Programmazione, M.Temperini, Introduzione alla gestione di liste 16/24
17 LISTA "struct e puntatori": inserimento in lista, in testa 1) allocazione nuovonodo el list 3.2) 3.1) 7 2) assegnazione nuovonodo 3.1) far diventare il primo nodo successore del nuovonodo 3.2) far diventare lis puntatore al vero primo nodo della lista int main() { TipoLista list; TipoElem el; TipoNodo * nuovonodo; ; 14 )); /* 1) */ /* 2) */ nuovonodo-> ; /* 3.1)*/ ; /* 3.2)*/ return 0; Tecniche della Programmazione, M.Temperini, Introduzione alla gestione di liste 17/24
18 LISTA "struct e puntatori": inserimento in lista, in testa - CASO LISTA VUOTA CASO LISTA VUOTA nuovonodo list 1) 2) memoria l'istr. /* 3.2 */ fa si' che list punti al nuovo primo nodo della lista e non contenga piu' ; precedentemente l'istr. /* 3.1 */ ha assegnato al next del nuovo nodo; cosi' questa lista di un nodo e' chiusa per bene. Quindi nel caso "LISTA VUOTA" l'algoritmo funziona bene. Allora una lista si potrebbe costruire da zero, mediante una serie di inserimenti in testa Tecniche della Programmazione, M.Temperini, Introduzione alla gestione di liste 18/24
19 LISTA "struct e puntatori": costruzione di una lista di n nodi mediante inserimento in testa 0.1) reslista = (init lista risultato) 0.2) lettura dato 1) costruzione nuovo nodo n volte 2) assegnazione nuovo->info = 3) inserimento in testa del nuovo nodo TipoLista ( ) { TipoLista reslista ; int i; TipoElem dato; TipoNodo * nuovo; for (i=1; ; i++) { ); leggielem( &dato ); /* 0.2) */ nuovo = /* nuovo->info ; /* nuovo->next = ; /* 3.1)*/ reslista = ; /* 3.2)*/ return ; Tecniche della Programmazione, M.Temperini, Introduzione alla gestione di liste 19/24
20 LISTA "struct e puntatori": FUNZIONE di inserimento in lista, in testa L'idea e' che con la chiamata instestalista(&lis, 12) ^ lis memoria la lista (, 14) diventi (7,, 14) (perche'?), e quindi 14 void instestalista(tipolista *plis, TipoElem el) { TipoNodo * nuovo; malloc(sizeof(tiponodo)); nuovo = el; = * ; /* 3.1 */ * ; /* 3.2 */ return; instestalista(&lis, 12) Tecniche della Programmazione, M.Temperini, Introduzione alla gestione di liste 20/24
21 LISTA "struct e puntatori": costruzione di una lista, usando instestalista() 0) reslista = (init lista risultato) 1) lettura dato 2) inserimento del dato in testa a reslista n volte supponendo che la chiamata sia lis = costrlista(3) e la successione dei dati sia 7,4,, che lista viene? (disegnarla! Non dirla o pensarla, ok?) Tecniche della Programmazione, M.Temperini, Introduzione alla gestione di liste /24
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
DettagliPreviously 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
DettagliPreviously 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
DettagliTecniche 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
DettagliStrutture 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
Dettagli5. 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
DettagliIMPLEMENTAZIONE 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
DettagliLaboratorio 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
DettagliLaurea 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
DettagliPolitecnico 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
DettagliEsercitazioni 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
DettagliListe 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(*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
DettagliCorso 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
DettagliADT 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
DettagliListe 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
DettagliDiversi 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
DettagliAllocazione 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
DettagliStrutture 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
DettagliStrutture 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));
DettagliIL 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
DettagliProgrammazione 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
DettagliProva 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).
DettagliListe 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
DettagliStrutture 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
DettagliEsercitazione 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
DettagliINFORMATICA - 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;
DettagliParte 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
DettagliEsercitazioni 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
DettagliAllocazione 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
DettagliEsercizi 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;
Dettagli4 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
DettagliFondamenti 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
DettagliListe 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,
DettagliRappresentazione 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
DettagliFondamenti 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
DettagliProf. 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
DettagliStrutture 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
DettagliPag 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:...
DettagliListe. 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
DettagliPILE 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):
DettagliLa programmazione nel linguaggio C. 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
DettagliEsercitazione 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
DettagliLaboratorio 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
DettagliEsercitazioni 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
DettagliPROGRAMMAZIONE 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
DettagliINFORMATICA A. Titolo presentazione sottotitolo. Laboratorio n 6 Dott. Michele Zanella Ing. Gian Enrico Conti
INFORMATICA A Titolo presentazione sottotitolo A.A. 2018-19 Milano, XX mese 20XX Laboratorio n 6 Dott. Michele Zanella Ing. Gian Enrico Conti Ricorsione La ricorsione è un approccio per la risoluzione
DettagliListe a puntatori: un esercizio passo passo
Liste a puntatori: un esercizio passo passo Prof. Orazio Mirabella Liste a puntatori: un esercizio passo passo (for dummies) Prof. Orazio Mirabella 1 Ripassiamo le Liste lineari Una lista lineare è una
DettagliALGORITMI 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
DettagliEsercitazione: 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
DettagliTitolo 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
DettagliCorso 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
DettagliSistemi 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à
DettagliProva 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
DettagliFondamenti 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
DettagliProgrammazione Procedurale in Linguaggio C++
Programmazione Procedurale in Linguaggio C++ Strutture di Dati Parte 2 La Lista G. Mecca M. Samela Università della Basilicata Strutture di Dati: Lista >> Sommario Sommario Introduzione Definizione di
DettagliE12 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
DettagliRappresentazione 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
DettagliIl 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
DettagliLa 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
DettagliGestione 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
DettagliLinguaggio C: PUNTATORI
Linguaggio C: PUNTATORI I puntatori sono una delle più importanti caratteristiche del linguaggio C. Permettono di lavorare a basso livello, mantenendo flessibilità e praticità. Il C utilizza molto i puntatori
DettagliIntroduzione alla Ricorsione
Introduzione alla Corso di Informatica A Vito Perrone Indice La formulazione in termini ricorsivi di problemi e algoritmi La ricorsione come strumento di programmazione L esecuzione dei sottoprogrammi
DettagliGestione 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
DettagliLaboratorio 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
DettagliLa 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
DettagliCorso 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
DettagliLa 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
DettagliIl 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/* programma per costruire una partizione del grafo in foreste disgiunte */ #include <stdio.h> #include <stdlib.h>
/* programma per costruire una partizione del grafo in foreste disgiunte */ #include #include /********************/ /* definizione tipi */ /********************/ /* implementazione
DettagliLinked 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
DettagliIn 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
DettagliTecniche della Programmazione lezione 17
Tecniche della Programmazione lezione 17 strutture di dati: astratte e concrete - metodologia di rappresentazione (e programmazione) di dati del mondo reale, mediante STRUTTURE DATI - tipo astratto di
DettagliEsercizi 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
DettagliAppunti sul C: le liste
Università degli Studi di L Aquila Facoltà di Scienze MM.FF.NN. Corso di Laurea in Informatica Modulo di Laboratorio di Algoritmi e Strutture Dati Appunti sul C: le liste Giovanna Melideo melideo@di.univaq.it
DettagliStrutture 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
DettagliStruct 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#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
DettagliCorso di Informatica 1 Esercitazione n. 7
Corso di Informatica 1 Esercitazione n. 7 Marco Liverani Esercizio n. 1 Letta in input una sequenza di numeri interi memorizzarli in una lista e stampare la lista stessa. Eliminare dalla lista i nodi che
DettagliInformatica 1. Prova di recupero 21 Settembre 2001
Informatica 1 Prova di recupero 21 Settembre 2001 Si risolvano i seguenti esercizi. Ai fini della determinazione del voto finale il loro punteggio andrà sommato al punteggio del laboratorio. Il tempo complessivo
DettagliRappresentazione di dati
Rappresentazione di dati oggetti del mondo reale: - caratteristiche - caratteristiche obiettivo della rappresentazione analisi e progettazione strutture dati teoriche (ADT) - domini ( ) - dominio di interesse
DettagliL'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
DettagliUna 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
DettagliPROGRAMMAZIONE 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
DettagliFondamenti 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
DettagliLinked 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
DettagliAlberi. Strutture dati: Alberi. Alberi: Alcuni concetti. Alberi: definizione ricorsiva. Alberi: Una prima realizzazione. Alberi: prima Realizzazione
Alberi Strutture dati: Alberi Strutture gerarchiche di dati Esempi Il file system di un sistema operativo L organigramma di un azienda Alberi generali, alberi n-ari, alberi binari, Ogni nodo ha un unico
DettagliTipi user-defined. Dichiarazione di tipo
Tipi user-defined Tipi user-defined Il C mette a disposizione un insieme di tipi di dato predefiniti (tipi built-in) e dei meccanismi per definire nuovi tipi (tipi user-defined) Vediamo le regole generali
DettagliScritto di Algoritmi e s.d. (1o anno) 14 Luglio 2004 TESTO e RISPOSTE (in fondo)
Scritto di Algoritmi e s.d. (1o anno) 14 Luglio 2004 TESTO e RISPOSTE (in fondo) Esercizio 1 (punti 4 in prima approssimazione) Consideriamo il seguente codice C: typedef struct nodo * Alb; struct nodo
Dettagliin 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,...
DettagliESERCIZIO 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,
DettagliLinguaggio 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
DettagliAmbienti di Programmazione per il Software di Base
Ambienti di Programmazione per il Software di Base Le Funzioni in C Esercizi sulle Funzioni svolti Esercizi sulle Funzioni da svolgere A.A. 2011/2012 Ambienti di Programmazione per il Software di Base
DettagliImplementazione 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
DettagliEsercitazioni 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
DettagliFondamenti di Informatica T-1, 2018/2019 Modulo 2. Prova d Esame 3A di Giovedì 14 Febbraio 2019 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
DettagliFondamenti di Informatica T-1, 2013/2014 Modulo 2. Prova d Esame 1A di Giovedì 9 Gennaio 2014 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
DettagliGestione 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