怎么删除和修改指定学生信息
时间: 2024-03-27 11:40:10 浏览: 12
要删除或修改指定学生信息,我们需要根据学生的姓名或其他唯一标识符来查找该学生在链表中的位置。下面的示例代码演示了如何删除和修改指定学生信息:
```c
// 从链表中删除指定姓名的学生节点
void deleteStudent(Student **head, char *name) {
Student *prev = NULL;
Student *curr = *head;
while (curr != NULL && strcmp(curr->name, name) != 0) {
prev = curr;
curr = curr->next;
}
if (curr == NULL) {
printf("Student %s not found\n", name);
return;
}
if (prev == NULL) {
*head = curr->next;
} else {
prev->next = curr->next;
}
free(curr);
}
// 在链表中修改指定姓名的学生信息
void modifyStudent(Student *head, char *name, int age, int score) {
Student *s = head;
while (s != NULL && strcmp(s->name, name) != 0) {
s = s->next;
}
if (s == NULL) {
printf("Student %s not found\n", name);
return;
}
s->age = age;
s->score = score;
}
```
在上面的代码中,`deleteStudent` 函数接受链表头指针和要删除的学生姓名作为参数。它遍历链表查找与给定姓名匹配的学生节点,并从链表中删除该节点。如果找不到匹配的学生,函数会输出一条错误消息。类似地,`modifyStudent` 函数接受链表头指针、要修改的学生姓名、年龄和分数作为参数。它遍历链表查找与给定姓名匹配的学生节点,并将其年龄和分数更新为给定值。如果找不到匹配的学生,函数会输出一条错误消息。