c语言用链表读取文件
时间: 2023-09-30 21:02:28 浏览: 165
你可以使用链表来读取文件并将数据存储在内存中。下面是一个简单的示例,演示了如何使用链表读取文件中的数据:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
int data;
struct Node* next;
} Node;
Node* createNode(int data) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = data;
newNode->next = NULL;
return newNode;
}
void insertNode(Node** head, int data) {
Node* newNode = createNode(data);
if (*head == NULL) {
*head = newNode;
} else {
Node* temp = *head;
while (temp->next != NULL) {
temp = temp->next;
}
temp->next = newNode;
}
}
void displayList(Node* head) {
Node* temp = head;
while (temp != NULL) {
printf("%d ", temp->data);
temp = temp->next;
}
printf("\n");
}
void freeList(Node* head) {
Node* temp;
while (head != NULL) {
temp = head;
head = head->next;
free(temp);
}
}
int main() {
FILE* file = fopen("data.txt", "r");
if (file == NULL) {
printf("无法打开文件\n");
return 0;
}
Node* head = NULL;
int num;
while (fscanf(file, "%d", &num) != EOF) {
insertNode(&head, num);
}
fclose(file);
displayList(head);
freeList(head);
return 0;
}
```
在这个示例中,我们定义了一个简单的链表结构 `Node`,包含一个整数数据和一个指向下一个节点的指针。我们使用 `createNode` 函数来创建一个新的节点,使用 `insertNode` 函数将节点插入链表的末尾。`displayList` 函数用于打印链表中的所有数据,`freeList` 函数用于释放链表的内存。
在 `main` 函数中,我们首先打开文件(在这个示例中假设文件名为 "data.txt"),然后使用 `fscanf` 函数逐行读取文件中的数据,并将其插入链表中。最后,我们打印链表中的数据,释放链表的内存,并关闭文件。
请注意,这只是一个简单的示例,没有对错误处理进行详细处理。在实际应用中,你可能需要添加更多的错误检查和异常处理来确保程序的健壮性。
阅读全文