Neat, but not very practical/useful unless you are very constrained by memory and need a doubly linked list that you will always traverse starting at one end (much like stream ciphers, you can't just jump to the middle, since the next/prev pointer depends on the last one, which depends on the one before that, all the way back to the first)
Though I do love the XOR operator, and this just adds one more reason why (like the XOR swap trick http://en.wikipedia.org/wiki/XOR_swap_algorithm or XOR's extensive use in cryptography).