基於異或運算的對稱表

2021-08-28 04:17:43 字數 423 閱讀 9059

單鏈表只能方便的進行單向查詢,而雙鏈表可以方便的進行雙向查詢,但由於增加了乙個指標域,使得其儲存密度進一步降低。

有一種方法(基於異或運算的對稱表)可以使用乙個指標域就能夠方便的進行雙向查詢,它是一種用時間換取空間的折中策略。

異或運算回顧

3^5=6

011 ^101=110

x,y,x^y

x=y(xy)

y=x(xy)

儲存結構定義

typedef struct lnode

lnode,*linklnode;

typedef struct

linklist;

定義結點的link域為前驅位址和後繼位址的異或

開始結點的前驅位址和終端後繼位址均為null,整個鍊錶不再需要頭結點。

基於異或的對稱表在c語言中的實現

異或運算 有趣的異或運算

異或運算可以看做是沒有進製的加法,按位異或運算,相同為0,不同為1。0 0 0 0 1 1 1 0 1 1 1 0 觀察運算結果我們發現,當與0做異或運算時,另一元值不變 而與1做異或運算時,另一元值值取反。根據以上異或運算的特徵,可以有以下用途,除方便直觀外,運算效能也更加優異。1 變數重置0 假...

(與運算) (或運算) (異或運算)

即 兩個運算元同為 1 的時候為1 0 0 0 1 0 1 0 1 1 1 1 1 即 兩個運算元中至少有乙個為 1 的時候為1 0 0 0 0 1 1 1 0 1 1 1 0 即 兩個運算元不同的時候為1 運算規則 1 0 0 1 即 對乙個二進位制數按位取反,即將0變1,1變0。將乙個運算物件的...

與運算( ) 或運算( ) 異或運算( )

預算規則 0 0 0 0 1 0 1 0 0 1 1 1 即 兩個同時為1,結果為1,否則為0 例如 3 5 十進位制3轉為二進位制的3 0000 0011 十進位制5轉為二進位制的5 0000 0101 結果 0000 0001 轉為十進位制 1 即 3 5 1 運算規則 0 0 0 0 1 1 ...