contributed by < DokiDokiPB >
struct item {
uint16_t i;
struct list_head list;
};
取 HHHH 為 list_splice_tail
取 GGGG 為 list_for_each_entry_safe
取 IIII 為 &stack[++top]
取 JJJJ 為 &stack[++top]
取 KKKK 為 &stack[top--]
不用抄題目。闡述你的認知和想法。
partition 處理對象的順序,並且由 stack[top] 決定list_less 會是下一輪的 while loop 的 partition 處理對象。也就是會先處理最小值head 末端中以表格顯示過程
使用 Graphviz 重製,並嵌入於 HackMD 頁面。
參考上面表格的第二次 while loop 後,產生用不到的 empty,empty 的數量為( 為節點數量) ,此不計算 singular 數量:
若 n = 256,empty 的數量為 255 個,因此 MAX_DEPTH=512 實際能夠處理的節點數量少於 256 個
MAX_DEPTH:可以先想到的就是將 MAX_DEPTH 替換為 head 的節點數量,並且在某些步驟時將 empty 移除,(或是 circular stack?)