c - 测试损坏的列表

标签 c linked-list

假设我在不稳定的环境中收到一个列表,其中尾部元素仅部分填充了可访问的项目;此外,传递/删除/删除元素是一个非常合适的解决方案。

所以,

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

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

是否有测试和传递/删除此列表元素的方法?

最佳答案

C 不提供测试内存位置是否可访问的内置方法。您无法检查 next->A 是否可用,原因与您无法检查指针是否“悬空”的原因相同。

解决这个问题的方法是添加一个间接级别:制作一个始终可用的“信封”对象列表。每个信封都有一个指向实际对象的指针,以及一个指示对象可访问性的标志。这样,列表的提供者将能够独立于数据对象本身来操作标志,而不会干扰列表的内容:

List of envelopes

关于c - 测试损坏的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46223367/

相关文章:

c++ - 使用类的链表

java - 插入排序双循环链表

c - valgrind:mmap(0x600000, 8192) 在 UME 中失败,错误 12(无法分配内存)

c - 在 C 中找到 10,000,000 以内的平方

python - “ListNode”对象不可迭代

c++ - 指向正确对象但未分配的 Shared_Ptr

c - MKL 矩阵转置

c - 在 Visual Studio 中的其他几个项目中使用通用项目

c - 无论我发送什么,我都会在输出中收到 0

c - 为什么这个链表代码总是导致 head 为空?