În dezvoltarea software, stocarea statică (vectorii) devine o barieră atunci când numărul de elemente variază constant.
Inserarea unui element la începutul unui tablou de mari dimensiuni necesită rearanjarea
întregii memorii (mutări succesive), un proces costisitor.
Asemănător, ștergerea unui element dintr-un vector necesită deplasarea
spre stânga a tuturor elementelor din dreapta elementului șters
Spre deosebire de vectori, unde elementul v[i+1] este automat lângă v[i],
în liste trebuie să construim noi drumul. Folosim pointerul ca o „verigă”.
| Caracteristică | Vector (Static) | Listă Simplu Înlănțuită |
|---|---|---|
| Alocare Memorie | Bloc continuu de memorie | Elemente fragmentate în HEAP |
| Inserare/Ștergere | Lentă (necesită mutări) | Rapidă (doar schimbăm adresele) |
Analogia trenului: Un tren este flexibil. Fiecare vagon (nod) este independent. Pentru a adăuga marfă, doar "legi" un vagon nou oriunde, fără a reconstrui tot trenul.
Nodul este unitatea fundamentală: stochează valoarea și adresa de memorie a următorului element.
struct nod {
int info;
nod *urm; // Pointer către următorul nod
};
A(100), B(250), C(400)
0x11(30), 0x22(10), 0x33(40), 0x44(20)
X(0xA) ⮕ Y(0xB). Fă Y ⮕ X.
N1(0x1) ⮕ N2(0x2) ⮕ N3(0x3).
A(0x10) ⮕ C(0x30). Adaugă B(0x20).
Primul(0x100), Ultimul(0x999).
start(0xAAA). Nou nod N(0xBBB).
Termină după B(0x222).
P(0xP) ⮕ A(0xA) ⮕ B(0xB) ⮕ S(0xS). Schimbă A cu B.