链表移动元素
static inline void list_remove_ex(struct list *begin, struct list *end
{
begin->prev->next = end->next;
end->next->prev = begin->prev;
}
static inline void list_move_after(struct list *to_item,
struct list *begin, struct list *end)
{
list_remove_ex(begin, end);
to_item->next->prev = end;
end->next = to_item->next;
begin->prev = to_item;
to_item->next = begin;
}