linux核心鍊錶提取

2021-05-26 07:39:56 字數 1386 閱讀 6599

list.h
#ifndef if_list

#define if_list

#define list_head_init(x) list_head x=

#define list_head_init_static(x) static list_head_init(x)

struct __list_head

;typedef

struct __list_head list_head;

inline int list_empty(list_head* head);

inline void list_add(list_head* head, list_head* t);

inline void list_add_tail(list_head* head, list_head* t);

inline void list_del(list_head* t);

inline list_head* list_first(list_head* t);

inline list_head* list_takefirst(list_head* head);

inline int list_count(list_head* t);

inline void list_init(list_head* head);

#define list_entry(p, t, list) /

(t*)((char*)p - (char*)(&(((t*)0)->list)))

#define list_for_each(p, x) /

for(p=(x)->next;p!=(x);p=p->next)

#endif

list.c
#include "list.h"

inline int list_empty(list_head* head)

inline void list_add(list_head* head, list_head* t)

inline void list_add_tail(list_head* head, list_head* t)

inline void list_del(list_head* t)

inline list_head* list_first(list_head* t)

inline list_head* list_takefirst(list_head* head)

inline int list_count(list_head* t)

return ret;

}inline void list_init(list_head* head)

測試**

main.c

linux核心鍊錶

鍊錶是一種常用的資料結構,它通過指標將一系列資料節點連線成一條資料鏈。相對於陣列,鍊錶具有更好的動態性,建立鍊錶時無需預先知道資料總量,可以隨機分配空間,可以高效地在鍊錶中的任意位置實時插入或刪除資料。鍊錶的開銷主要是訪問的順序性和組織鏈的空間損失。一 鍊錶結構 單鏈表結構如下 雙鏈表結構如圖 st...

linux核心鍊錶

include include struct list head struct mylist void list add struct list head new,struct list head prev,struct list head next void list add tail struc...

Linux核心鍊錶

核心鍊錶 核心鍊錶即,我麼在乙個鍊錶中插入或刪除乙個資料,都需要自己編寫 相當的麻煩,怎麼解決這個問題呢,為了更加方便的解決這個問題,linux中就產生了核心鍊錶,以後想要在鍊錶中插入資料或刪除資料時,只需要呼叫函式就可以了。鍊錶對比 鍊錶是一種資料結構,他通過指標將一系列的資料節點連線成一條資料鏈...