Chinaunix首页 | 论坛 | 博客
  • 博客访问: 937147
  • 博文数量: 192
  • 博客积分: 3070
  • 博客等级: 中校
  • 技术积分: 1861
  • 用 户 组: 普通用户
  • 注册时间: 2007-06-27 23:44
个人简介

Start Linux Leave Linux a while Back to Linux

文章分类

全部博文(192)

文章存档

2023年(18)

2022年(11)

2021年(8)

2020年(14)

2019年(7)

2018年(13)

2017年(16)

2016年(4)

2012年(2)

2011年(13)

2010年(26)

2009年(13)

2008年(27)

2007年(20)

我的朋友

分类:

2008-04-17 00:03:54

1. list_add(n, p)
 将 n 向的元素插入 p 所指向的特定元素之后.
   如果要将 n 插入在链表的开始,就设置 p 为第一个元素的地址(p为参数)
 
2.list_add_tail(n, p)
   将 n 向的元素插入 p 所指向的特定元素之前.
   如果要将 n 插入在链表的尾部,就设置 p 为第一个元素的地址(p为参数)  
 
3.list_del(p)
   删除 p 所指向的元素(没有必要指定链表的第一个元素)
 
4.list_empty(p)
   检查由第一个元素的地址p指定的链表是否为空
 
5.list_entry(ptr,type,member)
   其中ptr是指向该数据中list_head成员的指针,也就是存储在链表中的地址值,type是数据项的类型,member则是数据项类型定义中list_head成员的变量名
   ptr 指向当前节点
   type 数据结构的类型
   member type数据结构类型中list_head成员的变量名
   返回类型为 type 的数据结构的地址.
 
6.list_for_each(p, h)
   对表头地址 h 指定的链表进行扫描,在每次循环时,通过 p 返回指向链表元素的 list_head结构的指针.
 
7.list_for_each_entry(p, h, m)
   与 list_for_each 类似,但是返回包含了 list_head 结构的数据结构的地址,而不是list_head 结构本身的地址.
   第一个参数 p 为传入的遍历指针,指向宿主数据结构,第二个参数 h 为链表头,为list_head结构,第三个参数 m 为list_head结构在宿主结构中的成员名。
#define list_for_each_entry(pos, head, member)    \
    for (pos = list_entry((head)->next, typeof(*pos), member), \
        prefetch(pos->member.next);   \
       &pos->member != (head);      \
       pos = list_entry(pos->member.next, typeof(*pos), member), \
       prefetch(pos->member.next))
 
阅读(1342) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~