linux双向链表

来源:互联网 发布:java二维数组的遍历 编辑:程序博客网 时间:2024/05/04 22:59

双向循环链表

static __inline__ void list_add_tail(struct list_head *_new, struct list_head *head)

{
__list_add(_new, head->prev, head);
}

static __inline__ void __list_add(struct list_head * _new,
struct list_head * prev,
struct list_head * next)
{
next->prev = _new;
_new->next = next;
_new->prev = prev;
prev->next = _new;
}

前半部:next->prev = _new;   //prev    ...... ......             new  <---prev--- next
            _new->next = next;   //prev    ...... ......             new   ----next---> next

后半部:_new->prev = prev;     //prev <---prev--- new    ...... ......   next
            prev->next = _new;   //prev ----next---> new    ...... ......   next


如果是双向列表而不循环,如贪吃蛇那种,直接添加head如下:

next->prev = _new; //head->prev = _new;
_new->next = next; //_new->next = head;
next = _new; //head = _new;

0 0
原创粉丝点击