Ich habe Probleme mit dem Löschen des ersten Knotens in meiner verknüpften Liste, wenn ich die Ergebnisse nach dem Löschen anderer Knoten ist ein Erfolg, aber den ersten Knoten löschen, seine Drucke eine 0 und die letzten zwei Mitglieder der Struktur.Löschen des ersten Knotens in der verknüpften Liste zeigt immer noch Knoten in den Ergebnissen
Die Funktion soll einen Zeiger auf eine verknüpfte Liste übergeben werden, den Benutzer nach einer ID-Nummer fragen, um einen Knoten zu löschen, und die Liste zurückgeben.
struct dog *delete_from_list(struct dog *dogs){
int num;
printf("Enter a dogs ID number to be deleted ");
scanf("%d", &num);
struct dog *prev, *cur;
for(cur = dogs, prev = NULL;
cur !=NULL && cur->number != num;
prev = cur, cur = cur->next);
if (cur == NULL){
printf("Dog not found");
return dogs;
}
if(prev == NULL){
dogs = dogs->next;
printf("Dog deleted");
}
else{
prev->next = cur->next;
}
free(cur);
return dogs;
}
Dies ist die Funktion, um die Liste zu drucken, danach
void print(struct dog *list){
/* Prints all structs within the
* linked list
*/
printf("\nID Number\t Dog Name\t Breed\t\t Owner\n");
for(; list != NULL; list = list->next){
printf("%d\t\t %-10s\t %-10s\t %-12s\n", list->number, list->dog_name, list->breed, list->owner_last_name);
}
}
Bitte fügen Sie den Code, wie Sie überprüfen (_still zeigt Knoten in results_). – BLUEPIXY
Ich habe die Druckfunktion hinzugefügt, die ich verwende, um die Liste auszudrucken. – moose0306
Rufen Sie wie folgt an? ZB "list = delete_from_list (list);' – BLUEPIXY