c语言从文本文件中读取数据遍历已有链表,找到并删除该内容
时间: 2023-05-22 08:06:53 浏览: 205
c语言链表的插入、删除和查找.doc
可以使用 fopen() 函数打开文本文件,使用 fgets() 函数逐行读取文件内容,再使用 strtok() 函数解析每行数据,并将其与链表中的数据匹配。如果找到匹配项,可以使用 free() 函数删除该节点。具体实现可以参考以下示例代码:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Node {
char data[100];
struct Node *next;
};
void deleteNode(struct Node **head_ref, char *key) {
struct Node *temp = *head_ref, *prev;
if (temp != NULL && strcmp(temp->data, key) == 0) {
*head_ref = temp->next;
free(temp);
return;
}
while (temp != NULL && strcmp(temp->data, key) != 0) {
prev = temp;
temp = temp->next;
}
if (temp == NULL) return;
prev->next = temp->next;
free(temp);
}
void printList(struct Node *node) {
while (node != NULL) {
printf("%s\n", node->data);
node = node->next;
}
}
void insertNode(struct Node **head_ref, char *new_data) {
struct Node *new_node = (struct Node*) malloc(sizeof(struct Node));
strcpy(new_node->data, new_data);
new_node->next = (*head_ref);
(*head_ref) = new_node;
}
int main() {
FILE *fp = fopen("input.txt", "r");
char line[100];
struct Node *head = NULL;
// Read file and insert data into linked list
while (fgets(line, 100, fp)) {
strtok(line, "\n");
insertNode(&head, line);
}
fclose(fp);
// Traverse linked list and delete node if data matches
deleteNode(&head, "data to be deleted");
// Print remaining linked list
printList(head);
return 0;
}
```
请注意,此示例代码仅用于演示如何从文本文件中读取数据并操作链表,并不保证在所有情况下都能正常工作。实际开发中需要根据具体需求适当修改。
阅读全文