# 2025q1 Homework2 (quiz1+2) contributed by <`Eddie-064`> ## 第一週測驗題 ### 測驗一 `AAAA` = `&l->head` 考慮實作要求 case 1,如果 `before` 是 `head`,這樣會導致原本的 `head` 被覆蓋。 `BBBB` = `before` `CCCC` = `&(*p)->next` `DDDD` = `item->next` ```c 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`