Ma per andare a recuperare un elemento della lista
devo far scorrere "tutti" gli altri elementi ?
Ma per andare a recuperare un elemento della lista
devo far scorrere "tutti" gli altri elementi ?
Sì![]()
Altrimenti usi altre strutture dati, come i vettori.![]()
Ma Allora dove sta' la comodita' delle liste...![]()
#include <stdio.h>
int main() { char m[18+1] = "_TeYS_We2^[TWda [f";
int i = (((3*7))-21); for (; m[i]; i++)
(i<27) ? m[i]+=(((13)*3)-25) : m[i] -= (7+(i)*(-1));
puts(m); getchar(); return 0; };
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![]()
Live fast. Troll hard.
Pythonist | Djangonaut | Puppeteer | DevOps | OpenStacker | Lost in malloc
Team Lead @Gameloft Barcelona
![]()
Grazie della Riposta e' piu' che soddisfaciente......
#include <stdio.h>
int main() { char m[18+1] = "_TeYS_We2^[TWda [f";
int i = (((3*7))-21); for (; m[i]; i++)
(i<27) ? m[i]+=(((13)*3)-25) : m[i] -= (7+(i)*(-1));
puts(m); getchar(); return 0; };
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".
![]()
Riassumento i pregi e i difetti sono :
Pregi :
- Memoria
Difetti :
- Velocita'
![]()
#include <stdio.h>
int main() { char m[18+1] = "_TeYS_We2^[TWda [f";
int i = (((3*7))-21); for (; m[i]; i++)
(i<27) ? m[i]+=(((13)*3)-25) : m[i] -= (7+(i)*(-1));
puts(m); getchar(); return 0; };
beh guarda che nel peggiore dei casi scorri n elementiOriginariamente inviato da nightfall
Difetti :
- Velocita'
la complessità lineare nn è cosi male
Live fast. Troll hard.
Pythonist | Djangonaut | Puppeteer | DevOps | OpenStacker | Lost in malloc
Team Lead @Gameloft Barcelona
Si, inoltre ti hanno già suggerito l'uso dei vettori (la struttura viene chiamata anche tabella ad accesso diretto).Originariamente inviato da nightfall
Ma per andare a recuperare un elemento della lista
devo far scorrere "tutti" gli altri elementi ?
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.