Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在文件中维护链接列表_C++_File_Serialization_Linked List - Fatal编程技术网

C++ 在文件中维护链接列表

C++ 在文件中维护链接列表,c++,file,serialization,linked-list,C++,File,Serialization,Linked List,作为编程作业的一部分,我必须在文本文件中维护一个链表。对于链表数据结构,我很方便,但C++中的文件不是那么多。有谁能给我一个想法或如何处理它的概述。我应该能够添加或删除链表,也可以添加或删除链表中的节点,或者应该重用在一个链表上删除的空间。每个列表都有一个数字(整数),所有节点大小相同,包含整数 我的想法是 1) 使用编号(包含链表编号)维护文件 等 其中-1为终端指示,位置中的1表示第i个位置具有与其关联的位置 2) 打开另一个文件并像这样维护链接列表 data next_offset dat

作为编程作业的一部分,我必须在文本文件中维护一个链表。对于链表数据结构,我很方便,但C++中的文件不是那么多。有谁能给我一个想法或如何处理它的概述。我应该能够添加或删除链表,也可以添加或删除链表中的节点,或者应该重用在一个链表上删除的空间。每个列表都有一个数字(整数),所有节点大小相同,包含整数

我的想法是

1) 使用编号(包含链表编号)维护文件

等 其中-1为终端指示,位置中的1表示第i个位置具有与其关联的位置

2) 打开另一个文件并像这样维护链接列表

data next_offset
data next_offset
data NULL
通过这样做,我可以跟踪链表并有效地添加/删除/显示数组


在C++中做什么是我需要知道和学习的功能。我的时间非常少,我可以编写代码,将其作为基本级别的函数。请告知。提前感谢

关于使用什么函数的问题,您可以咨询:
通读本节可能需要15分钟,内容涵盖了基础知识。

1解决方案可能是将每个列表都有自己的文件。数字将是磁盘上的文件名。在文件内部,第一行始终是头节点。每一行将是两组数据。节点数据后跟文件中下一个节点的行。这将允许您重用已删除的空白空间。(下一个节点行的-1将是列表的结尾。例如:

1.txt:

(data) (next node lines number)
18     2
32     4
4      -1
5      3

<> p>这样的链接列表将是18 - 32>5>4</p>是否需要维护一个链表或多个列表?多个列表,但我猜节点可以在它们之间交换。BTW,您将分配给10的速率。尽管C++编程超过2年,我觉得这是一种困难。也许是一个很愚蠢的问题,但是为什么?你不是每行只存储一个元素吗?删除一个元素,删除一行。插入一个元素,插入一行。我想这会导致碎片。另外,我需要再次重用列表。我需要一种存储偏移量的方法,偏移量无论如何都不应该更改,因为如果我干扰偏移量,那么我的整个文件都会更改。不要担心t维护偏移量——当基础列表发生更改时重写整个文件是非常好的,特别是对于第一个实现。我想这就是我现在要使用的设计。我会让你知道的。谢谢。顺便说一句,你能给我一个如何遍历到特定行的示例吗???我想这将需要大量迭代。如果您想减少迭代次数,而不是一次性将整个文件读入内存,那么您可能应该研究以二进制格式读取/写入文件,以便可以查看文件中的各个位置。然后,最后一个值将是下一个元素的查找位置,而不是行号。另外,由于数据的大小都是一致的(整数)你知道每个需要多少字节,这只是尖叫二进制文件格式。这听起来是一个很酷的主意。所以我要做的是在二进制模式下写入文件,这样偏移量就不会改变,然后在二进制模式下,我仍然可以删除一个节点,然后再次使用空间。如果我是正确的,请告诉我。看看这篇文章(我知道我讨厌它也被分成多个页面)在c++中随机访问二进制文件:它会给你更多的知识,可能会帮助你更好地设计你的结构。
(data) (next node lines number)
18     2
32     4
4      -1
5      3