Проблема здесь:
struct node *p,*q,*r;
frontbacksplit_LL(p, r, count(p));
Чтобы сделать все правильно, вам нужно объявить r
как указатель на указатель на вторую половину.В вашем коде r
передается по значению, поэтому результат сохраняется в локальной переменной b
из frontbacksplit_LL
.Если вы передадите адрес r
(то есть &r
), это будет сделано правильно.
Объявление функции должно быть:
frontbacksplit_LL(struct node** a, struct node** b, int node_count)
и все a
s иb
s следует заменить на *a
и *b
соответственно.Затем вы должны назвать его как
struct node *p = NULL, *q = NULL, *r;
frontbacksplit_LL(&p, &r, count(p));
или
struct node **p = NULL, *q = NULL, **r;
frontbacksplit_LL(p, r, count(p));
В этом случае вам нужно будет получить доступ к спискам через *p
и *r
.