现在的位置: 首页 > 综合 > 正文

list_add_tail()

2013年09月18日 ⁄ 综合 ⁄ 共 1822字 ⁄ 字号 评论关闭
将new所代表的list_head插入head所索引的队列的尾部
static inline void list_add_tail(struct list_head *newstruct list_head *head)
{
    __list_add(
new, head->prev, head);
}

将new所代表的list_head插入到next索引的双链表(next索引双链表的第一个节点)的尾部

static inline void __list_add(struct list_head *new,
                  
struct list_head *prev,
                  
struct list_head *next)
{
    next
->prev = new//(1)
    new->next = next; //(2)
    new->prev = prev; //(3)
    prev->next = new//(4)
}


            next
new         head----+----------------------------------------------+
|                   |                                              |
|    list_head      |     list_head     list_head     list_head    |
|   |---------|     |    |---------|   |---------|   |---------|   |
+-->|  *next  |     +--->|  *next  |-->|  *next  |-->|  *next  |---+
    |---------|          |---------|   |---------|   |---------|
    |  *prev  |       +--|  *prev  |<--|  *prev  |<--|  *prev  |<--+---prev
    |---------|       |  |---------|   |---------|   |---------|   |
                      |                                            |
                      +--------------------------------------------+

   +---------------------+
   |        next         | (4)
new|        head----+    +-----------------------------------------+
|  |                |                                              |
+--+ list_head      |     list_head     list_head     list_head    |
|   |---------|(2)  |    |---------|   |---------|   |---------|   |
+-->|  *next  |-----+--->|  *next  |-->|  *next  |-->|  *next  |---+
    |---------|          |---------|   |---------|   |---------|
+---|  *prev  |<---------|  *prev  |<--|  *prev  |<--|  *prev  |<--+---prev
|   |---------|   (1)    |---------|   |---------|   |---------|   |
|                                                                  |
+------------------------------------------------------------------+
                           (3)

 

抱歉!评论已关闭.