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?)