SkipList class implementation with basic methods
◆ SkipList()
| data_structure::SkipList::SkipList |
( |
| ) |
|
|
inline |
Skip List constructor. Initializes header, start Node for searching in the list
◆ deleteElement()
| void data_structure::SkipList::deleteElement |
( |
int |
key | ) |
|
|
inline |
Deletes an element by key and prints if has been removed successfully
- Parameters
-
| key | is number that is used for comparision. |
135 update.fill(
nullptr);
137 for (
int i =
level; i >= 0; i--) {
138 while (x->forward[i] !=
nullptr && x->forward[i]->key < key)
145 bool doesnt_exist = (x ==
nullptr || x->key != key);
148 for (
int i = 0; i <=
level; i++) {
149 if (update[i]->forward[i] != x)
151 update[i]->forward[i] = x->forward[i];
◆ displayList()
| void data_structure::SkipList::displayList |
( |
| ) |
|
|
inline |
Display skip list level
189 for (
int i = 0; i <=
level; i++) {
192 while (
node !=
nullptr) {
◆ insertElement()
| void data_structure::SkipList::insertElement |
( |
int |
key, |
|
|
void * |
value |
|
) |
| |
|
inline |
Inserts elements with given key and value; It's level is computed by randomLevel() function.
- Parameters
-
| key | is number that is used for comparision |
| value | pointer to a value, that can be any type |
95 for (
int i =
level; i >= 0; i--) {
96 while (x->forward[i] !=
nullptr && x->forward[i]->key < key)
103 bool doesnt_exist = (x ==
nullptr || x->key != key);
107 if (rlevel >
level) {
108 for (
int i =
level + 1; i < rlevel + 1; i++) update[i] =
header;
116 for (
int i = 0; i <= rlevel; i++) {
117 n->forward[i] = update[i]->forward[i];
118 update[i]->forward[i] = n;
◆ randomLevel()
| int data_structure::SkipList::randomLevel |
( |
| ) |
|
|
inline |
Returns random level of the skip list. Every higher level is 2 times less likely.
- Returns
- random level for skip list
◆ searchElement()
| void* data_structure::SkipList::searchElement |
( |
int |
key | ) |
|
|
inline |
Searching element in skip list structure
- Parameters
-
| key | is number that is used for comparision |
- Returns
- pointer to the value of the node
170 for (
int i =
level; i >= 0; i--) {
171 while (x->forward[i] && x->forward[i]->key < key) x = x->forward[i];
175 if (x && x->key == key) {
The documentation for this class was generated from the following file: