c - XOR 链表 XOR 函数

标签 c linked-list xor

我在查看 XOR 链接列表的实现时多次遇到这段代码,但似乎没有一个人正确解释了这一行(或者也许我错过了一些东西) -

struct node* XOR (struct node *a, struct node *b)
{
    return (struct node*) ((unsigned int) (a) ^ (unsigned int) (b));
}

它是如何工作的?谁能解释一下所涉及的 Actor 阵容吗?(请指出之前描述过的任何答案/评论)谢谢!

最佳答案

除了对“a”和“b”指针指向的地址执行通常的异或操作

(unsigned int) (a) ^ (unsigned int) (b)

正是int 到指针的隐式转换(这里是结构节点*)使这段代码能够工作。

(struct node *)(unsigned int someInteger); 

编辑:感谢@aruisdante解释第二部分!

关于c - XOR 链表 XOR 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24918632/

相关文章:

python - XOR 加密在*大部分*时间都有效

c - 由于 zlib1.dll 丢失,程序无法启动。我怎样才能解决这个问题?

c - 函数不评估用户输入

c - 以 '\' 开头并后跟数字(例如 '\234')的字符是什么意思?

c++ - 无法取消引用结束列表迭代器

java - 插入到 LinkedList 的 ArrayList

xor - XOR 的各个部分如何命名?

java - Java 中与负字节的异或

c - 许多 child 中只有一个 child 死了,其余的等待 ctrl + c

c - linux 汇编程序如何乘除 64 位数字?