Certamente. Molte implementazioni "Elenco" nei linguaggi moderni sono in realtà liste concatenate, talvolta in combinazione con matrici o tabelle hash per l'accesso diretto (per indice anziché per iterazione).
Gli elenchi collegati (in particolare le liste a doppio collegamento) sono molto comunemente utilizzati nelle strutture di dati "reali".
Avrei il coraggio di dire che ogni linguaggio comune ha un'implementazione predefinita dell'elenco collegato, sia come lingua primitiva, libreria di modelli nativi (ad esempio C++), libreria nativa (ad es. Java) o implementazione di terze parti (probabilmente aperta -fonte).
Detto questo, diverse volte in passato ho scritto da solo l'implementazione di un elenco collegato da zero durante la creazione di codice di infrastruttura per strutture di dati complesse. A volte è una buona idea avere il pieno controllo dell'implementazione, e talvolta è necessario aggiungere una "svolta" alla classica implementazione per soddisfare i requisiti specifici. Non c'è giusto o sbagliato quando si tratta di codificare la propria implementazione, purché si comprendano le alternative e i trade-off. Nella maggior parte dei casi, e certamente in linguaggi molto moderni come C#, lo eviterei.
Un altro punto è quando è necessario utilizzare elenchi o array/vettori o tabelle hash. Dalla tua domanda capisco che sei a conoscenza dei compromessi qui, quindi non ne parlerò troppo, ma fondamentalmente, se il tuo uso principale sta attraversando gli elenchi per ordine, e la dimensione dell'elenco può variare in modo significativo, un elenco potrebbe essere un'opzione praticabile Un'altra considerazione è il tipo di inserimento. Se un caso d'uso comune è "inserendo nel mezzo", gli elenchi hanno un vantaggio significativo sugli array/vettori.Posso andare avanti, ma questa informazione è nei classici libri di CS :)
Precisazione: la mia risposta è indipendente dal linguaggio e non si riferisce specificamente a Generics che a mio avviso ha un'implementazione di lista collegata.
fonte
2009-06-22 14:29:21
L'elenco è implementato come una matrice. Si ridimensiona in modo dinamico se necessario (raddoppiando di volta in volta). –
DancesWithBamboo
L'elenco non è probabilmente implementato come elenco collegato. È sicuramente implementato come array, come dice la prima pagina (http://msdn.microsoft.com/en-us/library/6sh2ey19.aspx). Inoltre, potrebbe non essere necessario preoccuparsi delle strutture dati, ma altri programmatori di business lo fanno. E ... forse dovresti esserlo anche tu. –
Sì, probabilmente devi preoccupartene, ad essere onesti. – mquander