Redis學習筆記(二) 鍊錶

2022-03-14 18:52:33 字數 569 閱讀 6551

鍊錶提供了高效的節點重排能力,以及順序性的節點訪問方式,並且可以通過增刪節點來靈活地調整鍊錶的長度。

redis中煉表應用廣泛,如list中就使用了鍊錶。

每乙個鍊錶節點使用listnode結構標識(雙向鍊錶):

typedef struct

listnode

typedef struct

list

redis 鍊錶實現的特點:

1、雙向鍊錶,獲取前置後置節點的時間複雜度都是o(1);

2、無環,對鍊錶的訪問以null為終點。

3、帶有表頭表尾指標,程式獲取鍊錶的表頭節點和表尾節點的複雜度為o(1);

4、帶鍊錶長度計數器,程式獲取鍊錶中節點數量的複雜度為o(1);

5、多型,鍊錶節點使用 void* 指標儲存節點值,並可以通過list結構的dup、free、match 三個屬性為節點值設定型別特定函式,所以鍊錶可以用於儲存各種不型別的值。同

學習筆記 鍊錶 鍊錶入門

重新學習程式語言日記,2011年12月29日 09 17分 定義乙個結構體 struct linkhead,p1,p2 首先定義了乙個結構體,結構體包括指標域,資料域。這個結構體就是你鍊錶裡面的節點。每個節點都包括了資料域,指標域。有了這麼乙個結構體。肯定就需要初始化這個結構體了。寫個函式來初始化鍊...

鍊錶學習筆記 順序鍊錶

順序鍊錶的主要思想就是使用乙個整型陣列來儲存資料的指標。在建立記憶體的時候如圖,用後面的陣列來儲存指標。大量使用 給void重新起個名字 封裝使用的資料j 讓其對使用者是透明的 typedef void seqlist typedef void seqlistnode seqlist seqlist...

鍊錶學習筆記 雙向鍊錶

這次 寫的是迴圈鍊錶,用的是節點連線。雙向鍊錶相比與一般鍊錶要注意的地方就是 頭部插入和尾部插入 不要進行空指標操作。非鍊錶尾部的處理 if next null node pre current 如果是在頭部插如 則沒有 前節點 if i 0 tlist lenght return 0 dlinkl...