[理工] 資料結構 linked list 回收

看板Grad-ProbAsk作者 (我是短哀低)時間9年前 (2016/08/05 15:59), 9年前編輯推噓3(3012)
留言15則, 3人參與, 最新討論串1/1
今天數位課程上到linked list 其中談到了single的回收time complexity O(n) 而circular的是O(1) 我的問題是為什麼single的需要以while把整個要回收的list跑過一次呢? 而circular的只需要三步驟改變位置即可? linked list不是都有指標循序的排列下去嗎? 那為什麼看起來在circular的時候可以整串放回Av裡面 而single的時候沒有辦法只把最後一個node指向Av 然後把Av直接指向串列的First呢? 整理一下我的問題應該就是為什麼single的回收方式 他需要把串列用while串起來? linked list 不是本來就已經把node串好了嗎? 謝謝!!! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.230.139.24 ※ 文章網址: https://www.ptt.cc/bbs/Grad-ProbAsk/M.1470383949.A.615.html

08/05 16:14, , 1F
我資結沒有很頂好但可以稍微回答你
08/05 16:14, 1F

08/05 16:14, , 2F
Circular link list 回收與 link list 的長度無關
08/05 16:14, 2F

08/05 16:16, , 3F
circular link list 若要回收任何一條 只要將它前面
08/05 16:16, 3F

08/05 16:16, , 4F
連結的link 拉回AV就好
08/05 16:16, 4F

08/05 16:18, , 5F
因為它是個circular 我只要把link 拉回來成一個圓就
08/05 16:18, 5F

08/05 16:18, , 6F
好了
08/05 16:18, 6F

08/05 16:57, , 7F
簡單來說 single link list 必須知道它的最末點在
08/05 16:57, 7F

08/05 16:57, , 8F
哪 才能當做可用串列的尾 而 circular link list 只
08/05 16:57, 8F

08/05 16:57, , 9F
要找到一個點 當做可用串列的頭 而它後面那個點當做
08/05 16:57, 9F

08/05 16:57, , 10F
可用串列的尾
08/05 16:57, 10F

08/05 17:05, , 11F
另外我覺得與其說把link放回AV(可用串列) 在這里比
08/05 17:05, 11F

08/05 17:05, , 12F
較像要把整條link list 當做AV
08/05 17:05, 12F
謝謝你!!! 我懂了!!是因為single的並不知道最末端在哪裡,所以必須走到底才能確定,而circul ar沒差嗎? 謝謝你!! ※ 編輯: shortid (61.230.139.24), 08/05/2016 17:18:52

08/05 17:21, , 13F
嗯嗯 沒錯
08/05 17:21, 13F

08/05 18:15, , 14F
哦..詳細推
08/05 18:15, 14F

08/05 19:30, , 15F
強者推
08/05 19:30, 15F
文章代碼(AID): #1Nf4TDOL (Grad-ProbAsk)