sys queue h中的list結構和linux list h中的hlist結構是一樣的嗎?

時間 2021-06-09 09:19:45

1樓:youthanasia

稍微回答一點吧先,有需求了再詳細解答

你的說法對了一半

首先,核心的鍊錶實現(linux/list.h)和glibc的實現 (sys/queue.h)效果和使用方式是不太一樣的。

核心的鍊錶實現是乙個通用鍊錶,list_head結構是內嵌在資料結構裡的鍊錶,具體的實現方式,有很多的參考文獻,你可以查閱。

而glibc的鍊錶是通過巨集來定義的乙個傳統的鍊錶,是乙個具體的鍊錶結構,如下

#define LIST_HEAD(name, type

struct name

struct type *lh_first;

/* first element */

#define LIST_ENTRY(type

struct

struct type *le_next;

/* next element */

struct type **le_prev;

/* address of previous next element */\}

另一方面,你說他和hlist很像,這是對的

sys/queue.h裡面的list_entry的prev的形式(指向前乙個節點的le_next的位址)和核心hlist_node是一致的,都是為了克服煉表頭和鍊錶節點形式不一致的問題。

大概就是這樣。

python中 list1 append list list2 與list1 append list2 的區別是深拷貝麼?

謝藥 l1 300,311 la lb id l1 4510553440 id la 0 4510553440 id lb 0 4510613448 id l1 0 140290197409840 id l1 1 140290197409912 id la 0 0 140290197409840 i...

python中list可以將迴圈專場列表為什麼元組不行?

谷天賜 看文件 help list Help onclass list inmodule builtins class list object list iterable Built in mutable sequence.Ifnoargument isgiven the constructor c...

Python序列解包中傳入list後用list進行for迴圈無法完成?

你應該是把序列解包和def頭函式收集引數搞混了,序列解包需要在函式呼叫中加 號,即demo a 要想迴圈5次有兩種方法 頭函式和函式呼叫都不加 或者都加 你這種寫法相當於lst a lst中只有乙個型別為list的元素 因為Python這個特性是把傳進去的引數打包成tuple啊。你想要的是demo ...