举例C语言链表存入到文件怎么进行查找
时间: 2024-01-01 16:03:28 浏览: 84
好的,我来给你举一个 C 语言的例子。
假设有如下链表定义:
```
typedef struct Node {
int data;
struct Node* next;
} Node;
Node* head = NULL;
Node* tail = NULL;
// 添加节点
void addNode(int data) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = data;
newNode->next = NULL;
if (tail == NULL) {
head = tail = newNode;
} else {
tail->next = newNode;
tail = newNode;
}
}
```
现在我们将这个链表存储到文件中,可以使用以下代码:
```
void saveListToFile(const char* filename) {
FILE* fp = fopen(filename, "wb");
if (fp == NULL) {
fprintf(stderr, "Failed to open file for writing: %s\n", filename);
return;
}
Node* node = head;
while (node != NULL) {
fwrite(&node->data, sizeof(int), 1, fp);
node = node->next;
}
fclose(fp);
}
```
这里使用 C 语言的文件操作将链表数据写入文件。注意,我们使用了二进制模式打开文件,这样可以确保数据能够正确地写入和读取。
现在我们要从文件中查找某个数据,可以使用以下代码:
```
Node* findNode(int data) {
FILE* fp = fopen("list.bin", "rb");
if (fp == NULL) {
fprintf(stderr, "Failed to open file for reading: list.bin\n");
return NULL;
}
Node* node = head;
int value;
while (fread(&value, sizeof(int), 1, fp) == 1) {
if (value == data) {
return node;
}
node = node->next;
}
fclose(fp);
return NULL;
}
```
这里我们打开文件,从中读取数据,并遍历链表进行比较。如果找到了相等的节点,则返回该节点;否则返回 NULL。
阅读全文