鍊錶使用小技巧

2021-10-23 11:21:10 字數 620 閱讀 7562

typedef

struct data_node data_node_t;

假設上面的結構體定義是鏈結節點的型別,很多時候在初始化鍊錶的時候,會定義乙個data_node_t *型別的結構體指標作為煉表頭,該指標一般為全域性變數;

比如:data_node_t *data_node_header;

之後每次在為鍊錶新增節點node時,會用data_node_header先遍歷整個鍊錶,然後在需要的位置增加/刪除節點;

以上這種方式在實現中是沒什麼問題的,以下會說乙個更好的小技巧:

把鍊錶再次包含在新的結構體data_node_list_t,然後用data_node_list_t *定義煉表頭data_node_list_t

*data_node_list_header;

typedef

struct data_node_list data_node_list_t;

這樣的話,可以把鍊錶節點和煉表頭分開,對於煉表頭,可以再單獨新增其他變數,如果鍊錶節點的個數,最大值,最小值等資訊;

煉表頭的額外變數,在每次新增新的節點都更新一下,但當需要用到具體資訊(比如鍊錶最大值),就不用每次都去遍歷整個鍊錶

鍊錶常用技巧 鍊錶逆序 鍊錶中點

給定乙個鍊錶,一般的逆序的方法要設定三個指標,這種操作很繁瑣,下面總結一種簡單的方法 為鍊錶設定乙個頭結點,然後head後面的節點依次的插入到head結點之前。最後完成鍊錶的逆序。實現 listnode reverselist listnode head while return dummy.nex...

鍊錶問題技巧 使用偽頭節點

小技巧 對於鍊錶問題,建立頭節點時不知道合適的節點值,因此通常需要先初始化乙個預先指標 偽頭節點 pre,該指標的下乙個節點指向真正的頭結點head。使用預先指標的目的在於鍊錶初始化時無可用節點值。struct listnode listnode pre newlistnode 0 0為預先指標的值...

bpython使用技巧 Python 小技巧

python 隱秘的角落 1.args 和 kwargs 的使用 此處一定要注意 python 中有預設值得引數一定一定要放在沒有預設值的後邊。args 是以元組型別傳入 kwargs 是字典型別傳入 def parameter learn parameter 1,parameter 2 none,...