Я работаю над двусвязным списком в c, у меня есть двусвязный tepm2 с 20 узлами, и я хочу удалить узел, в который вставляется слово пользователя.Как удалить узел из дважды связанного списка в c
struct node
{
struct node *prev;
char word[100];
int repeatTime;
struct node *next;
}*h, *temp, *temp1, *temp2;
Каждый узел имеет уникальное слово.
printf("\n Enter word to delete : ");
scanf("%s", &word);
Delete(word);
int delete(char data[200]) //unable to delete
{
if (h == NULL) return;
temp2 = next = previous = h;
while (temp2->next != NULL)
{
if ((strcmp(temp2->word, data) == 0))
{
if (temp2->prev == NULL)
{
h = temp2->next;
free(temp2);
return;
}
else if (temp2->prev == NULL)
{
previous->next = temp2;
free(temp2);
previous->next = NULL;
return;
}
else
{
previous->next = temp2->next;
next->prev = temp2->next;
}
}
temp2 = temp->next;
}
}
Я не смог удалить конкретный узел, который пользователь слово ввести
Почему вы тестируете два идентичных условия? 'if (temp2-> prev == NULL)' и 'else if (temp2-> prev == NULL)' – yLaguardia
У меня была копия этой функции удаления, но я не могу понять ее логику. –
Лучше выбросьте ее и попробуйте написать свой собственный. –