Linux核心鍊錶細節及應用例項

2021-07-25 09:00:50 字數 1094 閱讀 1920

核心鍊錶是雙向迴圈鍊錶

核心鍊錶的實質是通過操作小結構體來實現插入、遍歷、刪除等功能 對於

/*** list_for_each_entry    -    iterate over list of given type

* @pos:    the type * to use as a loop counter.

* @head:    the head for your list.   //此處所指是小結構體

* @member:    the name of the list_struct within the struct.

*/#define list_for_each_entry(pos, head, member)                \

for (pos = list_entry((head)->next, typeof(*pos), member);    \

&pos->member != (head);                     \

pos = list_entry(pos->member.next, typeof(*pos), member))

#include

#include

#include"kernel_list.h"

//核心鍊錶的實質是通過操作小結構體來實現插入、遍歷、刪除等功能

//定義乙個結構體

typedef struct node

listnode,*kernel_list;

//初始化空鍊錶(初始化大結構體和小結構體)

kernel_list init_list(void)

else

return list;//返回值型別為kernel_list,初始化返回的是大結構體

}void show_list(kernel_list head)

printf("\n");

}int main(void)

while(i<5)

show_list(head);

printf("head = %p\n",head );

return 0;

}

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中就產生了核心鍊錶,以後想要在鍊錶中插入資料或刪除資料時,只需要呼叫函式就可以了。鍊錶對比 鍊錶是一種資料結構,他通過指標將一系列的資料節點連線成一條資料鏈...