1. DTLib中双向链表的设计思路 (1)数据结点之间在逻辑上构成双向循环,这有别于Linux内核链表的实现。 (2)头结点仅用于结点的定位,而Linux内核链表是将头结点作为循环的一部分。 2. 实现思路 (1)通过模板定义DualCircleList类,继承自DualLinkList类 (2) ...
分类:
其他好文 时间:
2017-07-11 23:30:47
阅读次数:
538
单向链表只能从一个方向遍历链表,即只能查找结点的下一个结点(后继结点),而不能查找结点的上一个结点(前驱结点)。鉴于上述问题,引入了双向链表。由于双向循环链表包含双向链表的所有功能操作。因此,我们只讲述双向循环链表。 与单向链表不同,双向链表的结点构造如下图所示。即一个结点由三个部分组成,数据域DA ...
分类:
其他好文 时间:
2017-06-07 22:26:34
阅读次数:
174
单链表的缺点是只能往前,不能后退,虽然有循环单链表,但后退的成本还是很高的,需要跑一圈。在这个时候呢,双向链表就应运而生了,再加上循环即双向循环 链表就更加不错了。所谓双向链表只不过是添加了一个指向前驱结点的指针,双向循环链表是将最后一个结点的后继指针指向头结点,这在遍历时很关键。 程序: #inc ...
分类:
其他好文 时间:
2017-05-30 16:08:39
阅读次数:
172
关键宏的解析: container_of(ptr,type,member);//可以返回包含list_head的父结构体的地址。 http://www.embedu.org/Column/Column433.htm 参考资料:使用实例 http://www.cnblogs.com/Anker/arc ...
分类:
系统相关 时间:
2017-05-27 12:23:56
阅读次数:
279
双向循环链表 link.h link.cpp main.cpp ...
分类:
编程语言 时间:
2017-05-09 00:44:57
阅读次数:
219
前一节介绍的侵入式链表的实现的封装性做得不好,因为会让消费者foo.c直接使用宏container_of()。这一节对list的定义做了一下改进,如下所示: 既然链表结点存了offset, 那么就不再需要container_of()了。(注:Solaris的侵入式双向循环链表就是这么实现的) 1. ...
分类:
其他好文 时间:
2017-05-05 14:11:54
阅读次数:
219
要理解Linux中实现的双向循环链表("侵入式"链表),首先得弄明白宏container_of。 本文尝试从gcc的关键字typeof和宏offsetof入手,循序渐进地剖析宏container_of之实现原理。 1. typeof (from: https://en.wikipedia.org/w ...
分类:
其他好文 时间:
2017-05-02 22:11:44
阅读次数:
204
———————————————————————————————————————————— 双向循环链表 //遍历等执行方法与普通双向链表相同,不单独列举 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ...
分类:
编程语言 时间:
2017-04-29 18:57:41
阅读次数:
508