Secondo lo Wikipedia article on linked lists, l'inserimento nel mezzo di un elenco collegato è considerato O (1). Penserei che sarebbe O (n). Non avresti bisogno di localizzare il nodo che potrebbe essere vicino alla fine della lista?Perché si sta inserendo nel mezzo di una lista collegata O (1)?
Questa analisi non considera il rilevamento dell'operazione del nodo (sebbene sia richiesto) e solo l'inserimento stesso?
EDIT:
Le liste concatenate hanno diversi vantaggi rispetto array. L'inserimento di un elemento in un punto specifico di una lista è un'operazione a tempo costante, mentre l'inserimento in una matrice può richiedere il trasferimento di metà degli elementi o più.
L'affermazione di cui sopra è un po 'fuorviante per me. Correggetemi se sbaglio, ma credo che la conclusione dovrebbe essere:
Array:
- Trovare il punto di inserzione/delezione O (1)
- Esecuzione della inserzione/delezione O (n)
liste collegate:
- Trovare il punto di inserzione/delezione O (n)
- Esecuzione della inserzione/delezione O (1)
penso che l'unica volta che non avrebbe dovuto trovare la posizione è che se hai tenuto qualche una sorta di puntatore ad esso (come con la testa e la coda in alcuni casi). Quindi non possiamo dire chiaramente che le liste collegate battono sempre gli array per le opzioni di inserimento/cancellazione.
Non * abbastanza * un duplicato. La domanda precedente si concentrava sugli array dinamici, usando liste collegate come base per il confronto. –