Try   HackMD

2025q1 Homework2 (quiz1+2)

contributed by <Eddie-064>

第一週測驗題

測驗一

AAAA = &l->head 考慮實作要求 case 1,如果 beforehead,這樣會導致原本的 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,而不是像prevcurr 指標實作,可減少程式使用的指令。

測驗二

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