Code:

void divide_list(struct NODE *n, struct NODE **n1, struct NODE **n2)
{
struct NODE *node;
int i, j;
i = 1; j = 1;
node = n;
while(node != NULL)
{
node = node->next;
i++;
}
node = n;
while(j<i/2)
{
node = node->next;
j++;
}
*n2 = node->next;
node->next = NULL;
*n1 = n;
}

But now the problem that I am facing is how to mix the elements of 2 list,
Code:

void mix_list(struct NODE *n1, struct NODE *n2)
{
int k;
k = 0;
struct NODE *n_tmp, *n_tmp1;
n_tmp = n1;
n1 = n1->next;
printf("[%d]:x = %d, c = %c\n", k++, n_tmp->x, n_tmp->c);
n_tmp = n_tmp->next;
n_tmp = n2;
n2 = n2->next;
printf("[%d]:x = %d, c = %c\n", k++, n_tmp->x, n_tmp->c);
while(n1 != NULL && n2 != NULL)
{
n_tmp = n_tmp->next;
n_tmp = n1;
n1 = n1->next;
printf("[%d]:x = %d, c = %c\n", k++, n_tmp->x, n_tmp->c);
n_tmp = n_tmp->next;
n_tmp = n2;
n2 = n2->next;
printf("[%d]:x = %d, c = %c\n", k++, n_tmp->x, n_tmp->c);
}
while(n_tmp != NULL)
{
printf("[%d]:x = %d, c = %c\n", k++, n_tmp->x, n_tmp->c);
n_tmp = n_tmp->next;
}
printf("\n");
}

P/S: Sorry for my bad English.