赞
踩
最近上到数据结构,让建立个通用链表数据结构。
于是开始自己构思,原来的想法是想着建立个包含三个指针的数据节点,一个指向数据,另外两个分别是节点的前驱和后继。使用的时候只需要将“data”指针指向用户自定义的结构体就可以了。当时就自觉想法完美,啧啧啧。
然后就上网看看其他人的想法,毕竟还是觉得自己的想法不够成熟,看看大神们都是怎么写的,还看到了和我想法一样的实现,不过看完了还是觉得不够好。思考了下,还是觉得这样的结构的可复用性和灵活性还是达不到理想要求。最后,在博客园看到了工藤-新一的一篇博客
Linux内核中的通用链表实现!看完后觉得Linux的前辈们还是厉害啊,思路就是不一样,简直完美,感动万分。遂决定写下一篇我看的第一块Linux内核源码剖析。
在本文里,我将去掉源码中的注释,换上一些自己的注释和理解,同时也避免篇幅过长。
#ifndef _MYLIST_H
#define _MYLIST_H
#define LIST_POISON1 NULL
#define LIST_POISON2 NULL
这些就不不多说了,往下看
一开始就是实现通用链表的精华所在了:
struct list_head {
struct list_he
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。