Я пытаюсь поменять местами 2 узла со связанным списком XOR
моя структура:
typedef struct s_node
{
struct s_node *ptr;
int data;
} t_node;
и моя функция (где я хочу поменять местами x и y) a является предыдущим из x и b следующим из y
void swap_node(t_node *a, t_node *x, t_node *y, t_node *b)
{
//Swapping
x->ptr = xor_node(y, b);
y->ptr = xor_node(x, a);
//Update
a->ptr = xor_node(xor_node(y, a->ptr), y);
b->ptr = xor_node(xor_node(x, b->ptr), x);
}
xor_node просто выполняет XOR на 2 t_node*.
Для теста я составил список, который выглядит так: 1-2-3-4
После вызова этой функции результат будет таким: 1 - 2 - 2 - 1
Но я хочу иметь: 1 - 3 - 2 - 4
Спасибо!
xor_node
? - person merlin2011   schedule 13.03.2014