2017-09-14 53 views
1

假設我在易失性環境中收到一個列表,其中尾部元素僅部分填充了可訪問的項目;此外,傳遞/刪除/刪除元素是一個完美的解決方案。受損列表測試

所以,

next->A // is unaccessible 
next->B // is accessible 

if (next->A) // evaluates to true 

有測試和通過/刪除此列表元素的方法?

+1

什麼是「不穩定的環境」,「訪問要素」,「傾銷要素「甚至意味着在C的情況下? –

+2

將「僅部分填充」添加到混淆術語列表中。 – WhozCraig

+0

所以我正在解析數據包 - 數據包是'易失性',因爲它們有一個設置的格式,但是位被翻轉,損壞,數據包可能不完整等等。傾銷:我只是遞歸地刪除元素並設置next爲NULL – bordeo

回答

1

如果內存位置可訪問或不可訪問,則C不提供內置的測試方法。您無法檢查next->A是否可用,原因與您無法檢查指針是否爲「懸掛」相同。

修復此問題的方法是添加一個間接級別:創建一個始終可用的「信封」對象列表。每個信封都包含一個指向實際對象的指針,以及一個指示對象可訪問性的標誌。這樣,名單的提供者將能夠獨立操作數據對象本身的標誌,而不會干擾列表的內容:

List of envelopes

+0

真棒 - 感謝的人。如果有這樣的測試,那將是理想的。我在代碼中有一個更深的打印語句,表示可能有一個入口點來添加這樣的標誌,儘管整個信封可能超出範圍,欣賞負面的肯定! – bordeo