在我用c++编写的宿舍信息管理系统中的学生 入住信息管理中的退宿舍的功能,一下第一个退宿舍的代码没有出现异常,第二个退宿舍的代码当我输入数据后vs出现了以下图片中的异常,第二个代码增加了一个检查该学生号是否入住的检查。怎么解决?

void checkOutStudent(DormitorySystem* system, const string& studentID) {
DormitoryNode* dormNode = system->dormitories;
while (dormNode != nullptr) {
ResidentNode* prev = nullptr;
ResidentNode* current = dormNode->students;
while (current != nullptr) {
if (current->stu.ID == studentID) {
// 找到学生,进行退宿
if (prev != nullptr) {
prev->next = current->next;
}
else {
dormNode->students = current->next;
}
dormNode->dormitory.currentOccupants--;
delete current;
cout << "学生 " << studentID << " 成功退宿。\n";
return;
}
prev = current;
current = current->next;
}
dormNode = dormNode->next;
}
cout << "学生 " << studentID << " 不在任何宿舍中。\n";
}
void checkOutStudent(DormitorySystem* system, const string& studentID) {
// 先检查学生是否已经入住
bool isStudentInDormitory = false;
DormitoryNode* dormNode = system->dormitories;
while (dormNode != nullptr) {
ResidentNode* current = dormNode->students;
while (current != nullptr) {
if (current->stu.ID == studentID) {
isStudentInDormitory = true;
break;
}
current = current->next;
}
if (isStudentInDormitory) break;
dormNode = dormNode->next;
}
if (!isStudentInDormitory) {
cout << "学生 " << studentID << " 不在任何宿舍中。\n";
return;
}
// 如果学生已经入住,则进行退宿操作
dormNode = system->dormitories;
while (dormNode != nullptr) {
ResidentNode* prev = nullptr;
ResidentNode* current = dormNode->students;
while (current != nullptr) {
if (current->stu.ID == studentID) {
// 找到学生,进行退宿
if (prev != nullptr) {
prev->next = current->next;
}
else {
dormNode->students = current->next;
}
dormNode->dormitory.currentOccupants--;
delete current;
cout << "学生 " << studentID << " 成功退宿。\n";
return;
}
prev = current;
current = current->next;
}
dormNode = dormNode->next;
}
}