XOR連結リストとXOR交換アルゴリズム
XOR演算を使ってswapするだけの記事.
目的とか
XOR連結リスト - Wikipedia というページを見ました.
面白いけれど空間計算量と時間計算量がトレードオフになるのは変わらず.
仕組みは解るし,ポインタが要らないから初学者によさそう(よくない).
そして,XOR連結リストのページ下部にある XOR交換アルゴリズム - Wikipedia を発見.
C言語ではXORを行う関数はない……と思いきや,私の覚え忘れでした.
正しくは,AND(&, &&), OR(|, ||), NOT(~, !), XOR(^)があり,NAND, NOR, XNORがありません.
閑話休題,ページ内にあるソースコード例がにわかに信じられなかったので,自分で書いて実行してみました.
ソースコード
#include <stdio.h> int main() { int x = 2, y = 3; printf("x: %d\ty: %d\n", x, y); x ^= y; y ^= x; x ^= y; printf("x: %d\ty: %d\n", x, y); return 0; }
結果
x: 2 y: 3 x: 3 y: 2
感想
tmpなんて要らなかったんだ.