Потратив более 10 часов, создается следующий код:
struct stockRecord* temp = NULL;
struct stockRecord* head = NULL;
struct stockRecord* prevptr = NULL;
struct stockRecord* recurfun(struct stockRecord* list) {
temp = list;
if (head == NULL) head = temp;
if (temp == NULL) {
return head;
} else {
/*first node*/
if (prevptr == NULL) {
if (strstr(temp->name, "ABC-") != NULL) {
temp = temp->next;
head = temp;
prevptr = head;
}
}
/*last node*/
if (temp->next == NULL) {
if (strstr(temp->name, "ABC-") != NULL) {
prevptr->next = NULL;
}
return head;
}
/*middle node*/
if (strstr(temp->name, "ABC-") != NULL) {
prevptr->next = temp->next;
} else {
if (prevptr != NULL) {
prevptr = temp;
} else {
prevptr = head;
}
}
return recurfun(temp->next);
}
Проблема в том, что когда первый узел и второй узел также содержат «ABC-», функция удаляет только первый узелвторой узел все еще не может быть удален.
В чем проблемы моего кода?