Ich arbeite an doppelt verknüpften Liste in c, ich habe eine doppelt verknüpfte tepm2 mit 20 Knoten und ich möchte den Knoten löschen, dessen Wort Benutzer einfügen.Wie lösche Knoten aus doppelt verknüpften Liste in c
struct node
{
struct node *prev;
char word[100];
int repeatTime;
struct node *next;
}*h, *temp, *temp1, *temp2;
Jeder Knoten hat ein eindeutiges Wort.
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;
}
}
ich nicht in der Lage bin, den bestimmten Knoten zu löschen, den Benutzer Wort eingeben
Warum testen Sie für zwei identische Bedingungen? 'if (temp2-> prev == NULL)' und 'else if (temp2-> prev == NULL)' – yLaguardia
Ich hatte diese Löschfunktion kopiert, aber ich kann es nicht verstehen Logik .. –
Besser wegwerfen und versuchen Sie es schreibe dein Eigenes. –