鏈表是一種常用的數(shù)據(jù)結構,提供了順序訪問的方式,而且高效地增刪操作。
Redis中廣泛使用了鏈表,例如:列表的底層實現(xiàn)之一就是鏈表。
在Redis中,鏈表分為兩部分:鏈表信息 + 鏈表節(jié)點。
- 鏈表節(jié)點用來表示鏈表中的一個節(jié)點,基礎的值和指向前和后的指針
- 鏈表信息,用來保存整個鏈表的信息,例如首尾節(jié)點、節(jié)點數(shù)量
先來說鏈表節(jié)點,就是我們最常見的鏈表節(jié)點的結構:
typeof struct listNode{
// 前驅(qū)節(jié)點
struct listNode *prev;
// 后繼節(jié)點
struct listNode *next;
// 節(jié)點的值
void *value;
}listNode;
通過鏈表節(jié)點中的prev和next組成雙向鏈表。
而鏈表這個結構體中保存了整個鏈表的信息
typeof struct list{
listNode *head; // 表頭節(jié)點
listNode *tail; // 表尾節(jié)點
unsigned long len; // 鏈表節(jié)點數(shù)量
// 接下來就是一些鏈表操作的API
// 節(jié)點復制 ...
// 節(jié)點釋放 ...
// 節(jié)點比較 ...
}list;
文章來源:http://www.zghlxwxcb.cn/news/detail-649275.html
Redis中的鏈表并沒有什么特殊之處,總結一下特點:文章來源地址http://www.zghlxwxcb.cn/news/detail-649275.html
- 雙端操作,鏈表信息list中保存了首尾節(jié)點
- 無環(huán),head的prev始終為null,tail的next始終為null
- O(1)獲取鏈表節(jié)點數(shù)量
- 多態(tài):鏈表節(jié)點中通過
void*
來保存節(jié)點值,節(jié)點值可以是任意類型。
參考文章
- Redis數(shù)據(jù)結構——鏈表 - 隨心所于 - 博客園
- 《Redis設計與實現(xiàn)》
到了這里,關于Redis數(shù)據(jù)結構——鏈表list的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!