Diferente pentru skiplists intre reviziile #10 si #11

Nu exista diferente intre titluri.

Diferente intre continut:

h2. Implementare completa
Nodul de baza, continand in cazul de fata un integer pe post de informatie, puteti pune aici orice (info), array-ul de dimensiune variabila de pointeri (link), o legatura catre elementul "din spate" (prev), si un array de dimensiune variabila de integeri (jump), in care tin minte pentru fiecare pointer din link "cate elemente sare" - folositor pentru a accesul secvential.
Va prezint in continuare o implementare eleganta a skip lists-urilor cu cam tot ce ai putea avea nevoie in olimpiade: cautare dupa cheie si index, inserare, stergere, si posibilitatea de a calcula functiile Predecesor(node) si Succesor(node in O(1) cand ai node, pe care il gasesti in timp logaritmic. Vreau sa subliniez ca implementarea fara cautarea dupa index este cu mult mai simpla si scurta.
 
Nodul de baza contine in cazul de fata un integer pe post de informatie (info), dar puteti pune aici orice altceva, array-ul de dimensiune variabila de pointeri (link), o legatura catre elementul "din spate" (prev), si un array de dimensiune variabila de integeri (jump), in care tin minte pentru fiecare pointer din link "cate elemente sare" - folositor pentru accesul secvential.
== code(cpp)|
struct _node
	int lvl;
	node = head;
	for (lvl = H; lvl >= 0; lvl--)
	for (lvl = H; lvl >= 0 && index > 0; lvl--)
		if (node->link[lvl] != NULL && node->jump[lvl] <= index)
		{
			index -= node->jump[lvl];
}
==
Predecesorul si succesorul fiecarui nod se iau pur si simplu din node->prev, respectiv node->link[0].

Nu exista diferente intre securitate.

Topicul de forum nu a fost schimbat.