在Linux内核源代码中,list_splice实现了__list_splice:
static inline void __list_splice(const struct list_head *list,
struct list_head *prev,
struct list_head *next)
{
struct list_head *first = list->next; // Why?
struct list_head *last = list->prev;
first->prev = prev;
prev->next = first;
last->next = next;
next->prev = last;
}
Run Code Online (Sandbox Code Playgroud)
是不是list已经指向链表的头部了?为什么我们需要list->next取而代之?