typedef struct listnode listnode;
首先定義了乙個節點,包含前驅和後繼以及對應的value
typedef struct listiter listiter;
list的迭代器,next指標和迭代方向
typedef struct list list;
鍊錶內容 head和tail指標分別指向收尾,另外三個函式指標代表在拷貝,刪除,對比的時候,如果有函式可呼叫就呼叫當前次函式的邏輯,不然就呼叫自身的邏輯
/* create a new list. the created list can be freed with
* alfreelist(), but private value of every node need to be freed
* by the user before to call alfreelist().
* * on error, null is returned. otherwise the pointer to the new list. */
list *listcreate(void)
/* free the whole list.
* * this function can't fail. */
void listrelease(list *list)
zfree(list);
}
建立和刪除鍊錶沒什麼說的
/* add a new node to the list, to head, containing the specified 'value'
* pointer as value.
* * on error, null is returned and no operation is performed (i.e. the
* list remains unaltered).
* on success the 'list' pointer you pass to the function is returned. */
list *listaddnodehead(list *list, void *value)
else
list->len++;
return list;
}
在頭和尾部add道理一致
list *listinsertnode(list *list, listnode *old_node, void *value, int after)
} else
}if (node->prev != null)
if (node->next != null)
list->len++;
return list;
}
Redis原始碼分析 intset h c
intset.h c 是redis 的整數set實現,intset的結構體如下 基本結構 typedef struct intset intset intset的第乙個成員encoding,表明contents中的儲存資料的資料長度,可以是16bits,32bits,64bits。第二個成員leng...
Redis原始碼分析系列
redis目前熱門nosql記憶體資料庫,量不是很大,本系列是本人閱讀redis原始碼時記錄的筆記,由於時間倉促和水平有限,文中難免會有錯誤之處,歡迎讀者指出,共同學習進步,本文使用的redis版本是2.8.19。redis之hash資料結構 redis之intset資料結構 redis之skipl...
Redis原始碼分析(adlist)
原始碼版本 redis 4.0.1 原始碼位置 redis中的鍊錶叫adlist a generic doubly linked list implementation 乙個通用的雙端鍊錶實現 和普通單鏈表相比,它的方向可以向前或者向後,這是由於資料結構中定義了next和prev兩個指標決定的,下面...