La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Corso di informatica Athena – Periti Informatici

Presentazioni simili


Presentazione sul tema: "Corso di informatica Athena – Periti Informatici"— Transcript della presentazione:

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

2 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

3 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

4 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

5 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

6 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

7 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

8 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

9 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

10 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

11 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

12 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: */ list_add(&n, 3); /* lista: */ list_add(&n, 4); /* lista: */ 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

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

14 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

15 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

16 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

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

18 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

19 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

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

21 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

22 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


Scaricare ppt "Corso di informatica Athena – Periti Informatici"

Presentazioni simili


Annunci Google