mirror of
https://github.com/Steffo99/appunti-magistrali.git
synced 2024-11-25 03:34:17 +00:00
34 lines
No EOL
1.1 KiB
Markdown
34 lines
No EOL
1.1 KiB
Markdown
# Pila (Stack)
|
|
|
|
Una _pila_ è una struttura dati contenente **valori omogenei**.
|
|
|
|
## Proprietà
|
|
|
|
- I dati vi possono essere aggiunti solo tramite il **metodo `push()`**
|
|
- I dati possono essere estratti solo tramite il **metodo `pop()`**
|
|
- Verranno restituiti i valori inseriti secondo la strategia **Last In, First Out** (l'ultimo inserito sarà il primo a essere estratto).
|
|
|
|
> Ci si può immaginare una pila di libri, da cui si può solo prendere un libro alla volta, quello più in alto.
|
|
|
|
## Metodi
|
|
|
|
```python
|
|
class Stack:
|
|
def __init__(self): "Crea una nuova pila."
|
|
def is_empty(self) -> bool: "Restituisce vero se la pila è vuota."
|
|
def push(self, data): "Aggiunge un dato alla pila."
|
|
def top(self) -> ...: "Restituisce il primo dato della pila."
|
|
def pop(self) -> ...: "Restituisce il primo dato della pila e lo rimuove."
|
|
```
|
|
|
|
## Implementazione tramite lista
|
|
|
|
Utilizzando una lista possiamo realizzare una pila!
|
|
|
|
La direzione dei puntatori sarà dall'ultimo al primo, che non punterà più a nessuno.
|
|
|
|
Il costo di tutti i metodi è `Θ(1)`!
|
|
|
|
## Visualizzazione
|
|
|
|
[visualgo.net](https://visualgo.net/en/list) |