Please review my skip list code that is implemented using a linked list. It supports the insertion and deletion of numeric values.I'd like to know whether I implemented the skip list in its true sense or not.Check it out on github also.include <iostream>#include <stdlib.h>#include <stdio.h>#include <ctime>#include<windows.h>using namespace std;#define maxLevel 5;struct node{    double x;    int key;    node *next;    node *up;    node *bottom;    node *prev;};bool flip()//for Randomly Generating LEVELS{    return rand()%2;}void add(node *pre, node *curr, double val)//Add NODE after the given node{    if (pre->x>val) {            cout<<pre\t<<pre->x<<endl;        cout<<pre_after\t<<pre->x<<endl;    }    curr->next=pre->next;    curr->prev=pre;    pre->next=curr;        curr->x=val;        curr->up=NULL;        curr->bottom=NULL;   }void display(node *temp)//Display{    while (temp) {        if (temp->prev) {             cout<<temp->x<<\t;        }        temp=temp->next;    }    cout<<endl;   }node *bottom(node *temp){   return temp->bottom;}node *up(node *temp){    return temp->up;}node *prev(node *temp){    return temp->prev;}node *next(node *temp){    return temp->next;}node *maxNode(node *temp){    while (temp->up) {        temp=temp->up;    }    return temp;}node *maxNode(node *temp, int level){    for (int i=2; i<=level; i++) {        temp=up(temp);    }    return temp;}node *position(node *temp, double val){  // cout<<temp->x<<endl;    int le=1;        while (temp->bottom) {            if (temp->next) {                node *a=temp->next;                while (temp->x<=val && temp->next && a->x<=val )                {                    a=a->next;                    temp=temp->next;                }            }                       temp=temp->bottom;            ++le;        }    node *v=temp->next;    while (temp->next && temp->x<=val && v->x<=val) {        temp=temp->next;        v=v->next;    }    return temp;}void insertAFterAbove(node *temp, node *curr){    node *a=temp->next;    curr->next=a;    if (a) {         a->prev=curr;    }    curr->prev=temp;    temp->next=curr;}node* level(node *temp, int lev){    node *curr=new node;    temp->up=curr;    curr->x=temp->x;    curr->bottom=temp;    curr->next=NULL;    curr->prev=NULL;    while (temp->prev && !temp->up) {        temp=prev(temp);    }valid:    int check=1;    while (check!=lev && temp->up  ) {        temp=up(temp);        ++check;    }    if (check!=lev) {        temp=prev(temp);        while (temp->prev && !temp->up) {            temp=prev(temp);        }        goto valid;    }    insertAFterAbove(temp, curr);    return  curr;    }node* creaTenode(node *curr){    node *temp=new node;    temp->x=curr->x;    temp->bottom=curr;    temp->up=NULL;    temp->next=NULL;    temp->prev=NULL;    curr->up=temp;    return temp;}void deleteNode(node *temp){    node *pre=temp->prev;    pre->next=temp->next;    temp=temp->next;    if (temp) {        temp->prev=pre;    }}void menu(){    cout<<1 == > INSERT\n;    cout<<2 == > DELETE\n;     cout<<3 == > DISPLAY\n;}int main(int argc, const char * argv[]){   srand (time(NULL));    node *start;    start=new node;    start->next=NULL;    start->bottom=NULL;    start->up=NULL;    start->prev=NULL;    start->x=-888888888888888;    node *temp=start;    int max=maxLevel;    for (int i=2; i<=max; i++) {            node *curr=new node;            curr->next=NULL;            curr->bottom=temp;            curr->next=NULL;            curr->prev=NULL;            curr->up=NULL;            curr->x=i*-888888888888888;            temp->up=curr;            temp=curr;        }           cout<<endl;    while (1) {              system(cls);              system(color 4f);        if (start->next) {        }        else {            cout<<LIST EMPTY!\n\n;        }        menu();        int choice;        cout<<YOUR CHOICE :\t;        cin>>choice;          system(color 30);        switch (choice) {            case 1:            {                system(cls);                //Initializing...............                double num;                temp=start;                cout<<ENTER THE NUMBER :\t;                cin>>num;                if(!start->next)                {                    temp=start;                    node *curr=new node;                    curr->prev=start;                    start->next=curr;                    curr->x=num;                    curr->up=NULL;                    curr->bottom=NULL;                    curr->next=NULL;                }                else {                    temp=position(maxNode(temp), num);                    node *curr=new node;                    add(temp, curr, num);                    int check=1;                    while (check!=max) {                        int coin=flip();                        if (!coin) {                            break;                        }                        curr=creaTenode(curr);                        while (!temp->up) {                            temp=temp->prev;                        }                        temp=temp->up;                        insertAFterAbove(temp, curr);                        ++check;                    }                }                system(pause);                break;            }            case 2:{                  system(cls);                if (start->next) {                        cout<<\n==================\n;            display(start);            cout<<\n==================\n;                    cout<<ENTER THE VALUE TO DELETE :\t;                    double del;                    cin>>del;                    temp=start;                    temp=position(temp, del);                    if (temp->x==del) {                        while (temp) {                            deleteNode(temp);                            temp=temp->up;                        }                        cout<<\n------->DELETED!\n;                    }                    else {                            system(color 4f);                        cout<<Incorrect Number entered!\n;                    }                }                else {                        system(color 4f);                    cout<<\n==================\n;                     cerr<<OOOOOOOPS! LIST IS EMPTY__!\n;                    cout<<\n==================\n;                }                  system(pause);                break;            }//case-----2----ends            case 3:{                  system(cls);                if (start->next) {                    cout<<\n==================\n;                    temp=start;                        display(temp);                    cout<<\n==================\n;                }                else {                        system(color 4f);                    cout<<\n==================\n;                    cerr<<OOOOOOOPS! LIST IS EMPTY__!\n;                    cout<<\n==================\n;                }                  system(pause);                break;            }//case 3 ___ENDs;;;;;;            default:{               system(color 4f);                cerr<<INCORRRECT CHOICE\n;                system(pause);                break;            }        }    }    return 0;}
CPP skiplist for numeric values
c++;linked list;skip list