Я пытаюсь решить проблему Иосифа, используя деревья BCT (BST со счетчиком поддеревьев), и в качестве входных данных у меня есть односвязный список. Я сейчас изо всех сил пытаюсь получить свою функцию, которая преобразует связанный список в работу BCT.
node_t *createBST(node *head, node *tail, node_t *root){
if(tail -> value >= head -> value){
wynik *mid = half(head);
node_t *M;
M = malloc(sizeof(node_t));
M -> key = mid -> actual -> value;
M -> t = (tail -> value - head -> value + 1);
M -> up = root;
M -> left = createBST(head , mid -> prev, M);
M -> right = createBST(mid -> actual -> next, tail, M);
return M;
}
else{
return NULL;
}
}
Любая помощь или подсказки приветствуются :)