要实现保存和加载链接列表,需要定义一个结构体来表示列表中的节点。
typedef struct node{ int data; struct node *next; }Node;
然后,定义一个函数来创建节点并将其添加到列表中。
Node* create_node(int data){ Node new_node = (Node) malloc(sizeof(Node)); new_node->data = data; new_node->next = NULL; return new_node; }
现在,我们可以定义一个函数来保存链接列表到磁盘上。
void save_list(Node *head, char *filename){ FILE *fp; fp = fopen(filename, "w"); Node *temp = head; while (temp != NULL){ fprintf(fp, '%d\n”, temp->data); //将节点数据写入磁盘上 temp = temp->next; } fclose(fp); }
对于加载链接列表,我们需要一个新的函数来读取磁盘上的数据并将其转换为节点。
Node* load_list(char *filename){ FILE *fp; fp = fopen(filename, "r"); if(fp == NULL){ return NULL; } int data; Node *head = NULL; Node *temp = NULL; while (fscanf(fp, "%d", &data) != EOF){ if (head == NULL){ head = create_node(data); temp = head; }else{ temp->next = create_node(data); temp = temp->next; } } fclose(fp); return head; }
现在,我们的链接列表已经可以保存到磁盘上,或从磁盘上加载到内存中。