链接到文件的列表

时间:2013-05-19 03:49:43

标签: c++ c file memory-management

我有一个链表如下。

/*nodeType definitions*/
#define INT    1
#define FLOAT  2
#define DOUBLE 3

typedef struct
{
    int nodeType;
    void* node_data;//this field is also dynamically allocated
    Node* next;
}Node;

根据节点的类型(nodeType)更改节点的数据类型。那么如何将此链表存储在文件中。如何为新文件类型创建结构?

1 个答案:

答案 0 :(得分:3)

这取决于您希望如何使用文件中的数据。

在典型情况下,您只需将链接列表视为序列。将数据存储在文件中时,忽略链接,只存储数据序列。当你需要重读时,你读入一个记录,把它放在一个节点,读取另一个记录,把它放在下一个节点,依此类推,直到你到达文件的末尾。

显而易见的替代方案是,如果您希望能够将磁盘上的数据视为链表,即能够以最少的修改在序列中间插入记录。在这种情况下,您通常会将内存版本中的指针替换为下一条记录的文件偏移量。当/如果你想在序列的中间插入时,就像使用指针一样,仅操纵文件偏移量。