我正在尝试编写一个程序,以便在不使用任何库的情况下将链接列表序列化到文件中.我的问题是如何添加或删除序列结构的节点,因为我没有下一个指针?另外我怎么能避免碎片?
如果链接列表没有循环,那么这是一个"链接列表"的事实是内存细节,而不是序列化细节.只需将节点值写入文件并next在反序列化时构建指针.
但是,如果你的链表确实有循环,那么你需要更聪明的东西.您需要将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 ---+
Run Code Online (Sandbox Code Playgroud)