Ho pensato che l'array associativo (cioè la mappa o il dizionario) e la tabella di hashing fossero lo stesso concetto, fino a quando non ho visto in Wikipedia che
Per i dizionari con un numero molto piccolo di associazioni, può avere senso implementare il dizionario usando un elenco di associazioni, un elenco collegato di associazioni. ...
L'implementazione di uso generale più frequentemente utilizzata di un array associativo è con una tabella hash: un array di associazioni, insieme a una funzione hash che mappa ogni possibile chiave in un indice di array. ...
I dizionari possono anche essere memorizzati in alberi di ricerca binari o in strutture dati specializzate in un particolare tipo di chiavi come alberi radix, try, array Judy o alberi van Emde Boas. ...
Quindi, penso, il mio problema risiede nel fatto che non so che un array associativo (ovvero una mappa o un dizionario) sia un tipo di dati astratto e che una tabella di hashing sia una struttura di dati concreta e che possano essere utilizzate diverse strutture di dati concreti per implementare stesso tipo di dati astratto.
Le mie domande sarebbero
Qual è la differenza e la relazione tra strutture dati astratte e strutture dati concrete?
Quali esempi sono per ciascuno di essi (strutture dati astratte e concrete)? Più meglio è.
Esiste un elenco di quali strutture di dati concreti possono essere utilizzate per implementare quali strutture di dati astratte? Sarebbe bello averne uno.