1
Fork 0
mirror of https://github.com/Steffo99/appunti-magistrali.git synced 2024-11-25 11:34:18 +00:00
appunti-steffo/2 - Algoritmi e strutture dati/1 - Appunti/15 - Pila.md

34 lines
1.1 KiB
Markdown
Raw Normal View History

# 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)