什麼是鏈結串列
每個元素持有值與指向下一個元素位置的指標,並沿著指標串接起來的資料結構。已知位置時,插入與刪除只需改接指標,為 O(1);但要讀取第 i 個元素必須從開頭走訪,需要 O(n)。元素容易散落在記憶體各處,快取效果不如陣列。
日文名稱: 連結リスト
「鏈結串列」出現在5領域的10道練習題中(資料結構與演算法, 記憶體階層與效能, 程式設計基礎(虛擬碼追蹤)等)。
這個名詞所屬的領域: 資料結構與演算法
每個元素持有值與指向下一個元素位置的指標,並沿著指標串接起來的資料結構。已知位置時,插入與刪除只需改接指標,為 O(1);但要讀取第 i 個元素必須從開頭走訪,需要 O(n)。元素容易散落在記憶體各處,快取效果不如陣列。
日文名稱: 連結リスト
「鏈結串列」出現在5領域的10道練習題中(資料結構與演算法, 記憶體階層與效能, 程式設計基礎(虛擬碼追蹤)等)。
這個名詞所屬的領域: 資料結構與演算法
正確答案:A. 鏈結法在負載因子超過1時也能存放,但開放定址法無法存放超過表大小的元素,且負載因子接近1時搜尋次數會急遽增加
鏈結法把相同位置的元素串成串列,因此元素數超過表的大小也能存放,但串列的平均長度與負載因子成正比增加,搜尋的工作量也隨之增加。開放定址法只存放在表中,元素數最多只能到表的大小,負載因子接近1時尋找空位的次數會急遽增加。無論哪種方法,負載因子超過設定值(例如約0.5~0.75)時,通常都會放大表格並重新放入所有元素(重新雜湊)。開放定址法也會發生碰撞,是靠尋找空位置來處理。
在鏈結串列中,要讀取p->next之後才知道下一個元素的位址。
走訪上述鏈結串列的處理,比讀取相同元素數量的陣列容易大幅變慢,其原因為下列何者?在鏈結串列中,只要知道插入或刪除的位置,改寫前後的指標即可,只需 O(1)。
與陣列相比,鏈結串列(各元素持有指向下一個元素位置之指標的串列)的特徵,下列何者正確?重新連接鏈結串列時,要以不遺失通往後續元素路徑的順序指派。
下列程式在以陣列 next 連接的鏈結串列 A → C → E → D → B 中,把 val[6] 的「F」插入到「…鏈結串列在讀取目前元素之前,無法得知下一個元素的位址,沒有規律因此無法預測。
硬體預取特別容易發揮效果的存取為下列何者?當鏈結串列開頭的指標為A時,在某個執行緒讀取A並準備CAS的期間,其他執行緒可能移除A、對B進行操作,再放入位址相同的A節點。
關於使用CAS的無鎖資料結構中會出現的ABA問題,下列說明何者正確?陣列 預取 雜湊表 快取行 時間複雜度(大O符號) ABA 問題(ABA problem) LR/SC(載入保留/條件式儲存) GPU 二元搜尋樹 二元堆積