C语言 我创建了一个关于学生成绩的结构体,用链表输入了一些学生的成绩,并将这些成绩储存到了文件里。当我第二次运行程序时程序会读取文件中的数据并赋值到链表中。我希望在读取文件并赋值到链表中后在这个链表后面加一个标记节点以避免在下次将数据保存到文件时不与上一次保存的数据重复,请问应该如何做
时间: 2024-03-23 19:36:41 浏览: 53
您可以在链表的最后面添加一个标记节点,可以使用以下代码实现:
```c
struct node {
char name[20];
int score;
struct node *next;
};
void add_node(struct node **head, char *name, int score) {
struct node *new_node = malloc(sizeof(struct node));
strcpy(new_node->name, name);
new_node->score = score;
new_node->next = NULL;
if (*head == NULL) {
*head = new_node;
} else {
struct node *tmp = *head;
while (tmp->next != NULL) {
tmp = tmp->next;
}
tmp->next = new_node;
}
}
void add_flag(struct node **head) {
struct node *new_node = malloc(sizeof(struct node));
strcpy(new_node->name, "flag");
new_node->score = -1;
new_node->next = NULL;
if (*head == NULL) {
*head = new_node;
} else {
struct node *tmp = *head;
while (tmp->next != NULL) {
tmp = tmp->next;
}
tmp->next = new_node;
}
}
```
其中,`add_node`函数用于将数据添加到链表中,`add_flag`函数用于在链表末尾添加一个标记节点。
在读取文件并赋值到链表中后,可以调用`add_flag`函数来添加标记节点。在将链表中的数据保存到文件时,只需要保存标记节点之前的数据即可避免重复。
阅读全文