hlist 雜湊鍊錶

2021-04-12 21:52:35 字數 571 閱讀 3250

linux鍊錶設計者(因為 list.h 沒有署名,所以很可能就是 linus torvalds)認為雙頭(next、prev)的雙鏈表對於 hash 表來說 "過於浪費",因而另行設計了一套用於 hash 表應用的hlist資料結構--單指標表頭雙迴圈鍊錶,從上圖可以看出,hlist的表頭僅有乙個指向首節點的指標,而沒有指向尾節點的指標,這樣在可能是海量的 hash 表中儲存的表頭就能減少一半的空間消耗。

因為表頭和節點的資料結構不同,插入操作如果發生在表頭和首節點之間,以往的方法就行不通了:表頭的 first 指標必須修改指向新插入的節點,卻不能使用類似 list_add() 這樣統一的描述。為此,hlist節點的pprev 不再是指向前乙個節點的指標,而是指向前乙個節點(可能是表頭)中的 next(對於表頭則是 first)指標(struct list_head **pprev),從而在表頭插入的操作可以通過一致的 "*(node->;pprev)" 訪問和修改前驅節點的 next(或 first)指標。 

struct hlist_head

hlist雜湊鍊錶

原文出處 http blog.chinaunix.net u 12592 showart.php?id 451619 王耀 wangyao cs.hit.edu.cn hlist雜湊鍊錶是核心中常用的乙個資料結構,由於它不同於普通的鍊錶,所以這裡對hlist雜湊鍊錶進行一下分析,希望對大家有所幫助。...

雜湊鍊錶hlist

zyd cu ydzhang.blog.chinaunix.net 鍊錶 list 和雜湊表 hlist 是核心常用到的兩個工具,負責組織核心中很多的資料結構,如在程序管理中用於組織程序,檔案系統中的inode節點鍊錶,dentry鍊錶,vfsmount鍊錶等等。鍊錶使用struct list he...

雜湊鍊錶hlist解惑

鍊錶 list 和雜湊表 hlist 是核心常用到的兩個工具,負責組織核心中很多的資料結構,如在程序管理中用於組織程序,檔案系統中的inode節點鍊錶,dentry鍊錶,vfsmount鍊錶等等。鍊錶使用struct list head內嵌結構來將其寄生的結構組織成雙向迴圈鍊錶,並且表頭跟普通節點的...