————Author:qinfan,Date:2014.10.29
由于项目中总是会用到链表,而每次用到链表的类型又不尽相同,每次都去写一个一般链表,如此这般,何来的效率?如是,不如奉行鲁迅先生的拿来主义,借用linux内核的万能链表用于所有项目中,这是多么爽的一件事啊!
下面分为两个文件源码文件,一个是从kernel里面提取出来的头文件(list.h),稍作修改。一个是怎么用这个链表的测试文件(test.c),废话不多说,上菜!
由于暂时只用到了链表的插入,删除,查找功能,用到内核链表的功能函数只有这几个,其他的函数没有都剔除掉了。其中,在list.h文件中,有一个列子是用来说明内核中怎么计算出当前链表位置所指的结构体的首地址的,这只是我的个人愚见。在list_for_each(pos, head)函数中,由于在遍历链表时,我处理不当造成段错误,添加了一个判断条件(NULL!=pos),这样就避免了当指针为空的时候,遍历出错的问题。继续学习中……