Corso di informatica Athena – Periti Informatici

Slides:



Advertisements
Presentazioni simili
Puntatori Linguaggio C.
Advertisements

Strutture dati per insiemi disgiunti
Uso avanzato di C.
Tipi di dato astratti Lista, Pila, Coda, Albero.
Estendere i linguaggi: i tipi di dato astratti
Strutture dati lineari
LIP: 19 Aprile Contenuto Soluzione Compitino Tipo di dato MultiSet, estensione con sottoclasse.
Fondamenti di Informatica I CDL in Ingegneria Elettronica - A.A CDL in Ingegneria Elettronica - A.A Strutture dati dinamiche.
Fondamenti di Informatica I CDL in Ingegneria Elettronica - A.A CDL in Ingegneria Elettronica - A.A Strutture dati dinamiche.
Introduzione al linguaggio C Dr. Francesco Fabozzi Corso di Informatica.
Grafi Algoritmi e Strutture Dati. Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Algoritmi e strutture dati 2/ed 2 Copyright © The McGraw.
UD 3: “Le Liste” UD 4: “Pile e Code” UD 5: “Alberi e grafi”
Lez. 121 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Progettazione.
Algoritmi Avanzati Liste e Puntatori
Strutture dati elementari
Algoritmi in C++ (1) da completare
Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a – 3° ciclo.
Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a – 3° ciclo.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
1 FONDAMENTI DI INFORMATICA II Ingegneria Gestionale a.a ° Ciclo Liste.
Esercizi su alberi binari
Tail recursion: esempio
Alberi binari Definizione della struttura dati: struct tree { };
Esercizi su alberi binari di ricerca
Esercizi su strutture dinamiche Fondamenti di Programmazione Canale AD a.a. 2009/2010.
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2007/2008 Corso di Programmazione 1 a.a.2007/2008 Prof.ssa Chiara Petrioli Corso di Laurea.
Laboratorio di Linguaggi lezione V Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea in.
Albero: insieme di punti chiamati NODI e linee chiamate EDGES
Algoritmi e Strutture Dati
Modello dati ALBERO Albero: Albero: insieme di punti chiamati NODI e linee chiamate EDGES EDGE: linea che unisce due nodi distinti Radice (root): in una.
Modello dati ALBERO Albero: Albero: insieme di punti chiamati NODI e linee chiamate EDGES EDGE: linea che unisce due nodi distinti Radice (root): in una.
Esercizi su code Date due code in ingresso a valori interi in ordine crescente, scrivere una funzione che restituisca una terza coda che contenga i valori.
Esercizi su alberi binari
Struct, enum, Puntatori e Array dinamici
1 Strutture Dinamiche Corso di Informatica A Vito Perrone.
Le liste dinamiche La ricorsione
Fondamenti di Informatica1 Realizzazione software Due fasi: 1. Specifica dell'algoritmo 1.a Definizione dei dati 1.b Definizione della modalità della loro.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
1.Scrivere una funzione per cercare un numero x in una lista circolare di interi. La funzione deve restituire NULL se il numero non esiste. 2.Scrivere.
1 ListaDiElem Cancella( ListaDiElem lista, TipoElemento elem ) { ListaDiElem puntTemp; if( ! ListaVuota(lista) ) if( lista–>info == elem ) { puntTemp =
2000 Prentice Hall, Inc. All rights reserved. Capitolo 12 (Deitel) Le strutture dati dinamiche Sommario Introduzione Allocazione dinamica.
Strutture dati per insiemi disgiunti
15 maggio 2002 Avvisi: Ultima lezione: mercoledì 29 maggio II Esonero: mercoledì 5 giugno, ora da stabilire.
Corso di informatica Athena – Periti Informatici
Esercizi su File.
Esercizi Liste.
Esercizi su File e Liste
Grafi Rappresentazione mediante liste di adiacenza:
Tail recursion: esempio
Esercizi su alberi binari di ricerca
Alberi binari Definizione della struttura dati: struct tree { };
Nota (rif. alla lezione precedente): Vector vs ArrayList Le classi generiche Vector e ArrayList sono sostanzialmente equivalenti, ma: I metodi.
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 5 Le strutture informative Corso di Informatica 2 a.a. 2003/04 Lezione 5.
Schiavone & Scalas 2 In informatica, il termine stack o pila viene usato in diversi contesti per riferirsi a strutture dati le cui modalità d'accesso.
Struttura di una lista legata Una lista legata è una variabile strutturata in cui ogni elemento mantiene l’indirizzo (mediante un puntatore) dell’elemento.
Esercizio Si legga una sequenza di numeri interi da tastiera (terminatore: 0), quindi: Creare lista L1 con inserimento in testa; cons Creare lista L2 con.
1 FONDAMENTI DI INFORMATICA II Ingegneria Gestionale a.a ° Ciclo Pile e Code.
Heap concetti ed applicazioni. maggio 2002ASD - Heap2 heap heap = catasta condizione di heap 1.albero binario perfettamente bilanciato 2.tutte le foglie.
Esercitazione su Vector. Permette di definire collezioni di dati generiche, che sono in grado di memorizzare elementi di ogni sottotipo di Object Definito.
1 Il linguaggio C Puntatori e dintorni. 2 Puntatori : idea di base In C è possibile conoscere e denotare l’indirizzo della cella di memoria in cui è memorizzata.
Algoritmi e Strutture Dati Strutture Dati Elementari.
MODULO STRUTTURE DATI FONDAMENTALI: Strutture dinamiche
1 Il linguaggio C Precisazioni sull’esperienza in laboratorio.
Fondamenti di Informatica
1 Strutture dati. 2 Astrazione Non vogliamo sapere l’organizzazione fisica dei dati  indirizzi e celle di memoria Ci interessa solo la loro organizzazione.
Esercizi.
Corso di Algoritmi e Strutture Dati con Laboratorio Java Collections Framework (II parte)
Lezione n. Parole chiave: Corso di Laurea: Insegnamento: Docente: A.A Salvatore Cuomo Strutture dati di tipo astratto 19 Strutture dati,
13. Strutture dati dinamiche Ing. Simona Colucci Informatica - CDL in Ingegneria Industriale- A.A
1 MODULO STRUTTURE DATI FONDAMENTALI: Strutture dinamiche classe 4° INDUSTRIALE INFORMATICA Focus on.
Transcript della presentazione:

Corso di informatica Athena – Periti Informatici Liste Code e Pile! Docente: Daniele Prevedello

Corso di informatica Athena – Periti Informatici In informatica, una lista concatenata (o linked list) è una delle strutture dati fondamentali usate nellaprogrammazione. Essa consiste di una sequenza di nodi, ognuno contenente campi di dati arbitrari ed uno o due riferimenti ("link") che puntano al nodo successivo e/o precedente. Docente: Daniele Prevedello

Corso di informatica Athena – Periti Informatici Il modo più semplice di creare una lista è una lista semplicemente concatenata, che utilizza un collegamento per nodo. Questo collegamento punta al nodo successivo della lista o a un valore nullo. Docente: Daniele Prevedello

Corso di informatica Athena – Periti Informatici Un tipo più sofisticato di lista è una lista doppiamente concatenata o lista concatenata a due vie. Ogni nodo possiede due collegamenti: uno punta al nodo precedente o ad un valore nullo se è il primo nodo; l'altro punta al nodo successivo o ad un valore nullo se è il nodo finale. Docente: Daniele Prevedello

Corso di informatica Athena – Periti Informatici Le liste concatenate hanno vari vantaggi nei confronti degli array: Gli elementi possono essere inseriti nelle liste indefinitamente; Le operazioni di inserimento e cancellazione sono molto più veloci. Docente: Daniele Prevedello

Corso di informatica Athena – Periti Informatici Però presentano anche alcuni svantaggi rispetto agli array: Mentre gli array permettono un accesso casuale, le liste concatenate permettono soltanto un accesso sequenziale agli elementi ; Nelle liste concatenate viene usato più spazio per memorizzare i riferimenti agli elementi successivi (e precedenti). Docente: Daniele Prevedello

Corso di informatica Athena – Periti Informatici int o qualunque altro tipo semplice o complesso (array o altra struttura) typedef struct ns { int data; struct ns* next; } node; Docente: Daniele Prevedello

Corso di informatica Athena – Periti Informatici Inserimento node *list_add(node** p, int i) { node *n = (node*)malloc(sizeof(node)); n->next = *p; *p = n; n->data = i; return n; } Docente: Daniele Prevedello

Corso di informatica Athena – Periti Informatici Cancellazione void list_remove(node** p) { /* rimuove head */ if (*p != NULL) { node *n = *p; *p = (*p)->next; free(n); } Docente: Daniele Prevedello

Corso di informatica Athena – Periti Informatici Ricerca node** list_search(node** n, int i) { while (*n != NULL) { if ((*n)->data == i) { return n; } n = &(*n)->next; return NULL; Docente: Daniele Prevedello

Corso di informatica Athena – Periti Informatici Scorrimento void list_print(node* n) { if (n == NULL) { printf("la lista è vuota\n"); } while (n != NULL) { printf("print %p %p %d\n", n, n->next, n->data); n = n->next; Docente: Daniele Prevedello

Corso di informatica Athena – Periti Informatici int main(void) { node *n = NULL; list_add(&n, 0); /* lista: 0 */ list_add(&n, 1); /* lista: 1 0 */ list_add(&n, 2); /* lista: 2 1 0 */ list_add(&n, 3); /* lista: 3 2 1 0 */ list_add(&n, 4); /* lista: 4 3 2 1 0 */ list_print(n); list_remove(&n); /* rimuove il primo elemento (4) */ list_remove(&n->next); /* rimuove il nuovo secondo (2) */ list_remove(list_search(&n, 1)); /* rimuove la cella che contiene 1 (primo) */ list_remove(&n->next); /* rimuove il successivo (0) */ list_remove(&n); /* rimuove l'ultimo (3) */ return 0; } Docente: Daniele Prevedello

Corso di informatica Athena – Periti Informatici Code Docente: Daniele Prevedello

Corso di informatica Athena – Periti Informatici In Informatica per coda si intende una struttura dati di tipo FIFO, First In First Out (il primo in ingresso è il primo ad uscire). Un esempio pratico sono le code che in un paese civile si fanno per ottenere un servizio, come pagare al supermercato o farsi tagliare i capelli dal parrucchiere: idealmente si viene serviti nello stesso ordine con cui ci si è presentati. Docente: Daniele Prevedello

Corso di informatica Athena – Periti Informatici Operazioni su una coda: Accodamento di un elemento  Detta anche operazione di enqueue, serve a mettere un elemento in coda. Estrazione di un elemento  Detta anche operazione di dequeue, serve a rimuovere un elemento dalla testa della coda. Docente: Daniele Prevedello

Corso di informatica Athena – Periti Informatici Per implementare una coda viene utilizzato normalmente una lista concatenata. Ogni elemento della lista è un elemento della coda. Inoltre, viene conservata la testa coda come un puntatore. L'operazione di accodamento consiste nella normale operazione di inserimento di un elemento nella lista. L'operazione di estrazione consiste nel sostituire il puntatore che conserva la testa della coda con il secondo elemento della coda. È possibile inoltre utilizzare un array che può essere trattato come array circolare. Docente: Daniele Prevedello

Corso di informatica Athena – Periti Informatici Pile o Stack Docente: Daniele Prevedello

Corso di informatica Athena – Periti Informatici In informatica, il termine stack o pila viene usato per riferirsi a strutture dati le cui modalità d'accesso seguono una politica LIFO (Last In First Out). I dati vengono estratti (letti) in ordine rigorosamente inverso rispetto a quello in cui sono stati inseriti (scritti). Docente: Daniele Prevedello

Corso di informatica Athena – Periti Informatici Si immagini ad esempio una "pila di piatti" o una "pila di giornali“; l'idea è che quando si pone un piatto nella pila lo si metta in cima, e che quando si preleva un piatto si prelevi, analogamente, quello in cima. In generale la pila è un particolare tipo di lista in cui le operazioni di inserimento ed estrazione si compiono dallo stesso estremo. Docente: Daniele Prevedello

Corso di informatica Athena – Periti Informatici Docente: Daniele Prevedello

Corso di informatica Athena – Periti Informatici Esercizi Realizzare una lista che permetta di memorizzare un numero non definito di valori interi inseriti da un utente. Stampare la lista. Permettere la ricerca di un valore nella lista. Permettere la cancellazione di un elemento. Docente: Daniele Prevedello

Corso di informatica Athena – Periti Informatici Ultimo compito: IMPARARE A MEMORIA COME IMPLEMENTARE UNA LISTA (CODA O PILA) E LE OPERAZIONI SU DI ESSE! Docente: Daniele Prevedello