𝗦𝘁𝗿𝘂𝘁𝘁𝘂𝗿𝗲 𝗗𝗮𝘁𝗶 𝗟𝗶𝗻𝗲𝗮𝗿𝗶 𝗽𝗲𝗿 𝗶𝗹 𝗙𝗿𝗼𝗻𝘁𝗲𝗻𝗱
Le strutture dati lineari dispongono gli elementi in una sequenza. Ogni elemento ha un predecessore e un successore.
Arrays Gli array sono lo strumento principale in JavaScript. Utilizzano una memoria contigua. Ciò consente di accedere istantaneamente a qualsiasi elemento tramite il suo indice.
- push: aggiunge un elemento alla fine.
- unshift: aggiunge un elemento all'inizio. Questa operazione è lenta perché tutti gli altri elementi devono spostarsi di una posizione a destra.
- splice: aggiunge o rimuove elementi in qualsiasi posizione. Questo metodo modifica l'array originale. Non è una funzione pura.
Nota: Quando un array diventa troppo grande, JavaScript deve allocare un blocco di memoria più grande e copiare tutto. Questo incide sulle prestazioni.
Stacks Uno stack segue la regola LIFO: Last In, First Out (l'ultimo ad entrare è il primo ad uscire). Pensa a una pila di piatti. Puoi aggiungere o rimuovere elementi solo dalla parte superiore.
- push: aggiunge in cima.
- pop: rimuove dalla cima.
- peek: visualizza l'elemento in cima senza rimuoverlo.
Queues Una coda segue la regola FIFO: First In, First Out (il primo ad entrare è il primo ad uscire). Pensa a una fila in un negozio.
- push: aggiunge in fondo.
- shift: rimuove dall'inizio.
Attenzione: l'uso di shift su un array è lento per dataset di grandi dimensioni. Ogni elemento deve spostarsi a sinistra per colmare il vuoto. Per dati ad alto volume, utilizza invece una lista concatenata.
Linked Lists Una lista concatenata è composta da nodi. Ogni nodo contiene dei dati e un puntatore al nodo successivo.
- Vantaggi: aggiungere o rimuovere nodi è veloce una volta individuato il punto giusto. Devi solo cambiare i puntatori.
- Svantaggi: non è possibile saltare direttamente a un indice. Devi partire dalla testa (head) e seguire i puntatori uno per uno. Questo è un processo lento.
Riepilogo del confronto:
- Arrays: Ideali per letture frequenti e piccoli set di dati. L'accesso è O(1).
- Linked Lists: Ideali per scritture frequenti e grandi set di dati. L'inserimento è O(1) se si possiede il nodo.
Consigli Pro per JavaScript:
- Non mescolare tipi di dati diversi in un array. Mantenere i tipi uniformi aiuta il motore a utilizzare la memoria contigua.
- Usa sempre una funzione di confronto quando ordini i numeri.
[10, 2].sort()restituisce[10, 2]perché ordina i valori come stringhe. - Ricorda che la maggior parte dei metodi nativi degli array mutano l'array originale.