contributed by < charlie0822
>
使用 malloc 配置新的記憶體配置失敗的話傳回 NULL ,成功的話利用 INIT_LIST_HEAD 初始化 head 並回傳 head。
新增 node 為 l->next,依序走訪每個節點並且將節點空間釋放,直到走回l。
首先檢查 head 是否為 NULL,是的話回傳 false ,不是的話配置新的記憶體空間給 node ,如果配置失敗回傳NULL,使用 strdup 通過 malloc 分配記憶體並且將字串複製過去。
邏輯跟 q_insert_head 一樣,最後用 list_add_tail 加入到list的尾端。
首先先判斷 head 是否為 NULL 或是為 empty ,取得 head 之後第一個點的資訊後將 value 複製到 sp 上。
邏輯跟 q_remove_head 一樣,不一樣是用 list_last_entry
取得最後一個節點的資訊。
拜訪 head 左右節點,如果節點是奇數的話,會同時到達中間節點,如果是偶數的話,刪除第 (總節點 / 2 + 1) 的節點。
目前想到使用龜兔賽跑演算法來實作,下圖是有重複數值的鏈結串列,當有重複數值時,就代表這個鏈結串列會有環的出現,可藉由演算法 ??? (需要詳述策略) 找出重複的數字。
最後沒有想到如何用龜兔賽跑演算法去實作,詢問同學實作邏輯,使用list_for_each_safe走訪當前節點並判斷是否重複,isNeedDel判斷當下節點是否需要刪除。
使用 Graphviz 製圖!
注意 資訊科技詞彙翻譯。
:notes: jserv