我有一个链表如下。
/*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
)更改节点的数据类型。那么如何将此链表存储在文件中。如何为新文件类型创建结构?
答案 0 :(得分:3)
这取决于您希望如何使用文件中的数据。
在典型情况下,您只需将链接列表视为序列。将数据存储在文件中时,忽略链接,只存储数据序列。当你需要重读时,你读入一个记录,把它放在一个节点,读取另一个记录,把它放在下一个节点,依此类推,直到你到达文件的末尾。
显而易见的替代方案是,如果您希望能够将磁盘上的数据视为链表,即能够以最少的修改在序列中间插入记录。在这种情况下,您通常会将内存版本中的指针替换为下一条记录的文件偏移量。当/如果你想在序列的中间插入时,就像使用指针一样,仅操纵文件偏移量。