【发布时间】:2012-04-06 00:22:50
【问题描述】:
作为编程作业的一部分,我必须在文本文件中维护一个链表。我对链表数据结构非常方便,但对于 C++ 中的文件却不是很方便。有人可以给我一个想法或概述如何处理它。我应该能够添加或删除链表,也能够添加或删除链表中的节点,或者应该重用在一个链表上删除的空间。每个列表都有一个数字(整数),所有节点的大小相同,包含整数。
我的想法是,
1) 维护一个带有数字的文件(包含链表数字)
0 - NULL
1 - head_offset for_linked_list_num 1
0 - NULL
1 - head_offset_for_linked_list_num 3
1 - head_offset_for_linked_list_num 3
1 - head_offset_for_linked_list_num 3
等 其中 -1 是终止符指示,位置中的 1 表示第 i 个位置有与之关联的位置
2)打开另一个文件并像这样维护链表
data next_offset
data next_offset
data NULL
通过这样做,我可以跟踪链表并有效地添加/删除/显示数组。
在 C++ 中,我需要了解和学习哪些功能。我的时间非常少,我可以将其视为基本功能级别的代码。请指教。提前致谢
【问题讨论】:
-
您需要维护一个链接列表还是多个列表?
-
多个列表,但我猜节点可以在它们之间互换。顺便说一句,如果满分 10 分,你会给这个作业打多少分。尽管我用 C++ 编程了 2 年多,但我觉得这有点困难。
-
也许是一个非常愚蠢的问题,但为什么不每行只存储一个元素呢?删除一个元素,删除行。插入一个元素,插入一行。
-
我猜这会导致碎片化。另外,我需要再次重用该列表。我需要一种存储偏移量的方法,无论如何,偏移量都不应改变,因为如果我扰乱了偏移量,那么我的整个文件都会改变。
-
不用担心维护偏移量——当底层列表发生变化时重写整个文件非常好,特别是对于第一次实现。
标签: c++ file serialization linked-list