Kann eine XOR-verknüpfte Liste in C ++ implementiert werden, ohne undefiniertes Verhalten zu verursachen?

EinXOR-verknüpfte Liste ist eine modifizierte Version einer normalen doppelt verknüpften Liste, in der jeder Knoten nur einen "Zeiger" statt zwei speichert. Dieser "Zeiger" setzt sich aus dem XOR des nächsten und des vorherigen Zeigers zusammen. Um die Liste zu durchlaufen, werden zwei Zeiger benötigt - einer zum aktuellen Knoten und einer zum nächsten oder vorherigen Knoten. Um vorwärts zu laufen, wird die Adresse des vorherigen Knotens mit dem im aktuellen Knoten gespeicherten "Zeiger" XOR-verknüpft, wodurch der wahre "nächste" Zeiger sichtbar wird.

Der C ++ - Standard bewirkt, dass eine Reihe von Operationen an Zeigern und Ganzzahlen zu undefiniertem Verhalten führen. Sie können beispielsweise nicht garantieren, dass das Setzen eines bestimmten Bits in einer Zahl nicht dazu führt, dass die Hardware einen Interrupt auslöst. In einigen Fällen ist dies das Ergebnis von Bit Twiddling kann undefiniert sein.

Meine Frage lautet wie folgt: Gibt es eine C ++ - Implementierung einer XOR-verknüpften Liste, die nicht zu undefiniertem Verhalten führt?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage