Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


ADT pila/stack e coda/queue, Dispense di Informatica

ADT pila (stack) ADT coda (queue) + proposta di esercizi

Tipologia: Dispense

2019/2020

Caricato il 04/07/2020

solamente_Illa
solamente_Illa 🇮🇹

9 documenti

1 / 2

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
ADT lineari - Pile e code prof.ssa Ferrari Fiorenza
1
ADT Pila (Stack)
Si definisce pila (o stack) una struttura dati astratta e lineare, nella quale è possibile
effettuare solamente operazioni di inserimento (push) ed estrazione (pop) da un
unico estremo della lista, detto testa o top.
L’ultimo elemento inserito nella pila è il primo che verrà estratto, secondo la regola LIFO (Last in
First Out). Le operazioni fondamentali che caratterizzano l’interfaccia di una pila sono:
- funzioni
- F
1
: inizializzazione di una pila vuota
- F
2
: inserimento di un nuovo elemento nella pila (push)
- F
3
: estrazione di un elemento dal top della pila (pop)
- F
4
: visualizzazione dell’ultimo elemento inserito nella pila
- predicati (implementati da funzioni che restituiscono un valore booleano)
- P
1
: la pila è vuota.
Una pila può essere implementata tramite una lista concatenata semplice nella quale è possibile
effettuare soltanto l’inserimento e la cancellazione in testa.
ADT Coda (Queue)
Si definisce coda (o queue) una struttura astratta lineare nella quale è possibile
solamente inserire elementi da un estremo, detto coda (rear), ed estrarli dall’altro
estremo, detto testa (front).
Il primo elemento inserito nella coda è il primo che verrà estratto, secondo la regola FIFO (First in
First Out). Le operazioni fondamentali che caratterizzano l’interfaccia di una coda sono:
- funzioni
- F
1
: inizializzazione di una coda vuota
- F
2
: inserimento di un nuovo elemento nella posizione rear
- F
3
: estrazione di un elemento dalla posizione front
- F
4
: visualizzazione del primo elemento inserito nella coda (front)
- predicati (implementati da funzioni che restituiscono un valore booleano)
- P
1
: la coda è vuota.
Una coda può essere implementata tramite una lista circolare nella quale è possibile effettuare
soltanto l’inserimento in coda e la cancellazione in testa.
Una lista circolare è una lista concatenata semplice nella quale l’ultimo elemento, la
coda, contiene un puntatore alla testa.
La gestione di una lista circolare è spesso semplificata introducendo un puntatore all'ultimo
elemento.
INFO1
INFO2
INFO3
pfront
prear
pf2

Anteprima parziale del testo

Scarica ADT pila/stack e coda/queue e più Dispense in PDF di Informatica solo su Docsity!

ADT lineari - Pile e code prof.ssa Ferrari Fiorenza

ADT Pila (Stack)

Si definisce pila (o stack) una struttura dati astratta e lineare, nella quale è possibile effettuare solamente operazioni di inserimento (push) ed estrazione (pop) da un unico estremo della lista, detto testa o top.

L’ultimo elemento inserito nella pila è il primo che verrà estratto, secondo la regola LIFO ( Last in First Out ). Le operazioni fondamentali che caratterizzano l’interfaccia di una pila sono:

  • funzioni
    • F 1 : inizializzazione di una pila vuota
    • F 2 : inserimento di un nuovo elemento nella pila (push)
    • F 3 : estrazione di un elemento dal top della pila (pop)
    • F 4 : visualizzazione dell’ultimo elemento inserito nella pila
  • predicati (implementati da funzioni che restituiscono un valore booleano)
    • P 1 : la pila è vuota.

Una pila può essere implementata tramite una lista concatenata semplice nella quale è possibile effettuare soltanto l’inserimento e la cancellazione in testa.

ADT Coda (Queue)

Si definisce coda (o queue) una struttura astratta lineare nella quale è possibile solamente inserire elementi da un estremo, detto coda (rear), ed estrarli dall’altro estremo, detto testa (front).

Il primo elemento inserito nella coda è il primo che verrà estratto, secondo la regola FIFO ( First in First Out ). Le operazioni fondamentali che caratterizzano l’interfaccia di una coda sono:

  • funzioni
    • F 1 : inizializzazione di una coda vuota
    • F 2 : inserimento di un nuovo elemento nella posizione rear
    • F 3 : estrazione di un elemento dalla posizione front
    • F 4 : visualizzazione del primo elemento inserito nella coda (front)
  • predicati (implementati da funzioni che restituiscono un valore booleano)
    • P 1 : la coda è vuota. Una coda può essere implementata tramite una lista circolare nella quale è possibile effettuare soltanto l’inserimento in coda e la cancellazione in testa.

Una lista circolare è una lista concatenata semplice nella quale l’ultimo elemento, la coda, contiene un puntatore alla testa.

La gestione di una lista circolare è spesso semplificata introducendo un puntatore all'ultimo elemento.

INFO1 INFO2 INFO pfront

prear

ADT lineari - Pile e code prof.ssa Ferrari Fiorenza

Esercizi

  1. Implementare la classe pila mediante l'uso di una lista lineare semplice e della classe nodo
  2. Aggiungere alla classe pila il costruttore copia, un metodo per visualizzare l'ultimo elemento inserito, l'overoading dell'operatore >> per inserire N elementi nella pila, una funzione friend per effettuare la scansione.
  3. Implementare la classe coda tramite lista circolare.
  4. Una coda contenente numeri interi è implementata con una lista circolare dove il puntatore pfront indica il primo elemento inserito e prear l’ultimo. Scrivere un programma che, utilizzando le classi pila e coda opportunamente implementate, estragga gli elementi dalla coda e li inserisca in una pila inizialmente vuota.
  5. Code con priorità - Una lista concatenata semplice contiene nodi che, oltre ad un campo informativo e ad un puntatore a nodo, hanno un campo priorità che può assumere tre valori 0 (priorità massima), 1 o 2 (priorità minima). Utilizzando le classi lista e coda, opportunamente gestite, creare un programma che mantenendo l'ordine di inserimento dei dati nella lista, crei tre code, ognuna contenente nodi con una sola priorità.