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なんて要らなかったんだ.