Come hai potuto determinare se una raccolta è implementata come una matrice o come una struttura collegata senza accesso al codice sorgente (supponendo che tu possa eseguire il codice)?
Osservando il codice compilato.
Il codice compilato non è magico. Non è pieno di nomi amichevoli. Fa seguire le regole e si comporta in modi prevedibili. È leggibile Se non fosse, non funzionerebbe se la tua CPU lavorasse su di esso.
Vedere l'eseguibile in un editor esadecimale è il modo classico per farlo. I decompilatori possono aiutare aggiungendo un po 'di cordialità umana, ma certamente non sono necessari. Tutto quello che stanno facendo è rendere più facile per te ricordare cosa significano questi codici.
In questo caso particolare, una volta identificato il codice che sta manipolando la struttura dati, puoi guardare mentre legge i dati incrementando un indirizzo, come in un array, o se legge un indirizzo dalla struttura e lo segue all'indirizzo prossimo nodo dati.
Ovviamente in alcuni stack di compilation potresti trovare suggerimenti più ovvi che si nascondono come il nome della classe usata per creare la struttura dati.
Questi sono tutti concetti che uno sviluppatore dovrebbe comprendere, ma questo argomento potrebbe essere più efficace su Scambio di inversione dello stack di ingegneria . Se desideri spostarlo, cancellerò questa risposta.
Leggi altre domande sui tag data-structures algorithms