PDA

Visualizza la versione completa : [C] Liste...Recuperare un Elemento


nightfall
12-02-2004, 17:31
Ma per andare a recuperare un elemento della lista
devo far scorrere "tutti" gli altri elementi ?

iguana13
12-02-2004, 18:16
Sì :D

Altrimenti usi altre strutture dati, come i vettori. :ciauz:

nightfall
12-02-2004, 18:35
Ma Allora dove sta' la comodita' delle liste... :confused:

infinitejustice
12-02-2004, 18:42
Pensa se hai un array di 25.000 strutture enormi o anche solo interi e di dover inserirne una nuova dopo n...

Se è una lista devi solo modificare un paio di puntatori. In caso contrario dovresti spostare tutti gli elementi dopo n

ci sono un sacco di motivi :)

nightfall
12-02-2004, 18:44
:D
Grazie della Riposta e' piu' che soddisfaciente......

iguana13
12-02-2004, 18:51
Sempre nello stesso caso, quell'enorme insieme di elementi messi in un vettore dovrebbe occupera un grande spazio di memoria CONTIGUA.
Usando le liste, serve memoria "a spezzoni".

:ciauz:

nightfall
12-02-2004, 19:01
Riassumento i pregi e i difetti sono :

Pregi :
- Memoria
Difetti :
- Velocita'

:confused:

infinitejustice
12-02-2004, 19:06
Originariamente inviato da nightfall
Difetti :
- Velocita'

beh guarda che nel peggiore dei casi scorri n elementi
la complessità lineare nn è cosi male

internet
12-02-2004, 20:40
Originariamente inviato da nightfall
Ma per andare a recuperare un elemento della lista
devo far scorrere "tutti" gli altri elementi ?

Si, inoltre ti hanno già suggerito l'uso dei vettori (la struttura viene chiamata anche tabella ad accesso diretto).

Se devi fare molte ricerche negli elementi di un generico insieme ti conviene usare un albero binario di ricerca (tempo di ricerca O(log(N)) oppure tabelle hash (tempo di ricerca O(1+a)) oppure b-tree (tempo di ricerca O(t*logt(N))...
la scelta della struttura migliore dipende dalle operazioni che farai più spesso.

Loading