if (head->studentID == targetID) { Student* temp = head; head = head->next; free(temp); printf("学生信息删除成功。\n"); return; } Student* current = head; while (current->next != NULL) { if (current->next->studentID == targetID) { Student* temp = current->next; current->next = temp->next; free(temp); printf("学生信息删除成功。\n"); return; } current = current->next; } printf("未找到学号为%d的学生。\n", targetID); }解释这段代码
时间: 2024-02-29 07:53:39 浏览: 46
一个学生信息查询的程序
这段代码是 `deleteStudent()` 函数的具体实现。它的作用是遍历链表,查找指定学号的学生信息,并将其从链表中删除。
首先判断链表头节点的学号是否等于要删除的学号 `targetID`。如果是,说明要删除的学生就是头节点,直接将头节点指针 `head` 指向下一个节点,并释放原头节点的内存,最后输出 "学生信息删除成功。\n" 的提示信息,然后函数结束。
如果头节点的学号不等于要删除的学号,说明要查找的学生在链表的其他节点中。这时候需要一个指针 `current` 来遍历整个链表,查找指定学号的学生信息。
在遍历链表时,每次检查 `current` 指向的节点的下一个节点的学号是否等于要删除的学号 `targetID`。如果相等,说明找到了要删除的学生节点,将 `current` 指向节点的下一个节点,然后释放找到的节点的内存,最后输出 "学生信息删除成功。\n" 的提示信息,然后函数结束。
如果遍历完整个链表都没有找到要删除的学生节点,说明链表中不存在该学号的学生信息,输出 "未找到学号为 xxx 的学生。\n" 的提示信息,其中 xxx 是要删除的学生学号,然后函数结束。
阅读全文