【发布时间】:2014-04-17 10:56:46
【问题描述】:
我正在尝试用 XOR 链表交换 2 个节点
我的结构:
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 只是对 2 个 t_node* 进行 XOR。
为了测试,我做了一个列表,看起来像:1 - 2 - 3 - 4
调用此函数后,结果如下:1 - 2 - 2 - 1
但是,我想要:1 - 3 - 2 - 4
谢谢!
【问题讨论】:
-
xor_node的返回值是多少? -
一个 t_node* : pastie.org/8912914
标签: c linked-list swap xor