C++ code issue -getting segment fault

/*struct Node
{
int data;
struct Node *next;
struct Node *prev;

Node(int x){
    data = x;
    next = NULL;
    prev = NULL;
}

};*/

Node* partition(Node *l, Node *h){

{

int x = h->data;


Node *i = l->prev;


for (Node *j = l; j !=h; j = j->next)
{
    if (j->data <= x)
    {
      

        swap((j->data), (i->data));
       i = i->next;
    }
}

swap((i->data), (h->data));
return i;

}
}