<分区>
我正在尝试编写一个程序,在不使用任何库的情况下将链表序列化为文件。我的问题是如何在序列化结构中添加或删除节点,因为我没有下一个指针?另外,我怎样才能避免碎片化?
<分区>
我正在尝试编写一个程序,在不使用任何库的情况下将链表序列化为文件。我的问题是如何在序列化结构中添加或删除节点,因为我没有下一个指针?另外,我怎样才能避免碎片化?
最佳答案
如果您的链表没有循环,那么这是一个“链表”这一事实是内存细节,而不是序列化细节。只需将节点值写入文件并在反序列化时构建 next
指针。
但是,如果您的链接列表确实有循环,那么您将需要更智能的东西。您需要将 next
指针存储为节点(或类似的东西)的文件偏移量以对“链接”进行编码。
对于链表中的每个节点,存储两个单词。第一个是数据,第二个是下一个
节点的偏移量。下面是循环链表的示例:
+-> 1234 -> 5678 -> 2398 -+
| |
+-------------------------+
0 : 4bytes: 1234 : int data <------------+
4 : 4bytes: 8 : offset of next node -+ |
| |
8 : 4bytes: 5678 : int data <----------+ |
12 : 4bytes: 16 : offset of next node -+ |
| |
16 : 4bytes: 2398 : int data <----------+ |
20 : 4bytes: 0 : offset of next node ---+
关于c++ - 在序列化方面需要一些帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3090080/