linux內核鏈表的使用
鏈表定義在頭文件
鏈表數據結構
定義和初始化鏈表的頭部:
代碼
定義空鏈表:
空鏈表
初始化要插入鏈表中的元素:
因此,空鏈表是頭指針指向其自身的鏈表:p-> next = p-> prev = p。 如果鏈表不爲空,則服務“list_empty()”返回0,否則返回非0:
判斷空鏈表
list_add()在 鏈表的開頭插入一個元素(即在指定的頭部之後):
鏈表插入元素
list_add_tail()在鏈表的末尾插入一個元素(即在指定的頭部之前):
鏈表尾部插入
list_del_init()從鏈表中刪除一個元素並重新初始化該元素:
鏈表刪除元素
list_move()將元素從其當前鏈表移動到另一個鏈表的開頭:
list_move_tail()具有與list_move()相同的接口,但將元素從其當前鏈表移動到另一個鏈表的末尾。
list_splice()將鏈表附加到另一個列表。 list_splice_init()執行相同的操作,但重新初始化清空鏈表的頭部。
當'list_head'結構嵌入到高級結構中時,可以通過list_entry()從'list_head'上的指針檢索高級結構:
list_for_each()遍歷從鏈表的開頭到結尾的鏈表:
list_for_each_entry()是list_for_each()的擴展,因爲它使用高級結構上的指針迭代鏈表:
list_for_each_entry_reverse()與list_for_each_entry()的作用相同,但是從結尾到開頭遍歷鏈表。
list_for_each_entry_continue()與list_prepare_entry()一起使用迭代從給定元素到鏈表末尾的鏈表:
請支持一下山區留守採茶婦女和兒童:(點擊 瞭解更多)
查看原文 >>