У меня есть многослойный связанный список со списком пациентов, каждый список пациентов указывает на связанный список с пациентами, каждый пациент указывает на связанный список врачей. Я пытаюсь добавить несколько докторов, но когда я пытаюсь отобразить докторов, я получаю бесконечный цикл, как будто нет следующего указателя, указывающего на NULL. Если это только один врач, все работает нормально.
Я пробовал несколько подходов, таких как установка старого узла на временный указатель и затем установка нового узла для указания на временный. Мой связанный список пациентов и связанный список пациентов работают на 100%.
struct doctor {
char name[MAX_NAME];
struct doctor *next;
};
void addDoctor(char* patientNameInput, char* doctorNameInput)
{
struct patientList* tempList = list; // work on a copy of 'list'
int i = 0;
struct doctor* newDoctorNode = NULL;
newDoctorNode = (struct doctor*) malloc(sizeof(struct doctor));
struct doctor* tmp = NULL;
while (tempList != NULL)
{
while (tempList->patient->name[i] == patientNameInput[i])
{
if (tempList->patient->name[i] == '\0')
{
tempList->patient->doctors = newDoctorNode;
newDoctorNode->next = NULL;
for (int i = 0; i < 30; i++)
tempList->patient->doctors->name[i] = doctorNameInput[i];
}
i++;
}
tempList = tempList->next;
}
}
Функция ищет имя пациента и соответствующий список связанных списков пациентов. Когда он найден, он добавляет узел доктора для соответствующего пациента. Если я включу мою старую попытку временного указателя и выведу функцию, я получу бесконечный цикл. Я ожидаю, что вывод сможет отображать более 1 врача без ошибок.