La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

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

Presentazioni simili


Presentazione sul tema: "Corso di informatica Athena – Periti Informatici Liste Code e Pile! Docente: Daniele Prevedello."— 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.informaticastrutture datiprogrammazionecampi 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.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;valore nullo l'altro punta al nodo successivo o ad un valore nullo se è il nodo finale. valore nullo Docente: Daniele Prevedello

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

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

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

8 Corso di informatica Athena – Periti Informatici 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 Inserimento

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

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

11 Corso di informatica Athena – Periti Informatici 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 Scorrimento

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) */ list_print(n); 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).FIFO 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.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).informaticaLIFO 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 Liste Code e Pile! Docente: Daniele Prevedello."

Presentazioni simili


Annunci Google