contributed by <Eddie-064
>
AAAA
= &l->head
考慮實作要求 case 1,如果 before
是 head
,這樣會導致原本的 head
被覆蓋。
BBBB
= before
CCCC
= &(*p)->next
DDDD
= item->next
static inline void list_insert_before(list_t *l,
list_item_t *before,
list_item_t *item)
{
list_item_t **p;
for (p = AAAA; *p != BBBB; p = CCCC)
;
*p = item;
DDDD = before;
}
p
使用 indirect pointer,而不是像prev
與 curr
指標實作,可減少程式使用的指令。
EEEE
= (*pred_ptr)->r
FFFF
= &(*pred_ptr)->r
GGGG
= head->prev=prev
HHHH
= list_entry(pivot,node_t,list)->value
IIII
= list_entry(n,node_t,list)->value
JJJJ
= pivot
KKKK
= right