看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《clarkman (涼雨)》之銘言: : 目前想管理一組編號,可能是0~255,然後想要做到快速處理 : 用C處理 : 現在考慮兩種作法,不太知道怎麼樣才能做到高效率。 : 請問大家有更好的辦法嘛?以及下面兩種我該選擇哪一種? : 1. 使用linklist,當編號空出來就塞到linklist裡,要用編號就 : 直接取走,移除這個node : 缺點:一直new和free,還有串連、移除 =>這是目前的架構 : 2. 開一個32byte的陣列,每個bit當成是一個id : 一次掃一個byte,如果是ff,代表全用掉,往下一個byte掃 : 當發現不是ff,就開始掃bit,掃到後換算成id : 缺點:怕掃資料花太多時間,最壞的案例應該是id 255,先掃16次byte : 確認有無用完,然後再掃七次bit確認有沒有空的 3. 在記憶體空間很夠的時候,使用 linklist ,但是不要 new/free 。 一開始先把 256 個 nodes 用 array 開好,然後把它們串起來。 要用編號就從頭取走,然後指到新的頭。有新編號空出來, 就從頭的地方塞進去。 -- 活著的目的是為主活 然後為主死 死亡的目的是為主死 然後為主活 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.116.24.61
clarkman:應該沒那麼大的空間可以讓我用@@ 06/21 09:10
linotwo:以你的例子一個編號只佔 1 byte 06/21 10:23
linotwo:再怎樣也比 linked-list 省 06/21 10:23
嗯,一個 node 應該只需要一個 byte ,這應該已經... 很省了阿 XD ※ 編輯: sitos 來自: 122.116.24.61 (06/21 14:32)
clarkman:你的方法好像很不錯耶,用兩個index來處理也可以 06/24 10:15
我隨便心裡面估一下,應該是比原本提到的方法快。 不過當然也很可能有其它好寫又更快的方法。 ※ 編輯: sitos 來自: 122.116.24.61 (06/25 02:25)
zhouer:方法三看來看去就是用 array implement stack 啊... 06/26 05:27