Warum geht meine Liste nicht?
-
Zu Zeile 16:
gibt es denn bei dir eine struct element?
-
stimmt sollte struct elem heißen
so nun bekomme ich keine Fehlermeldungen mehr allerdings hängt sich das Programm beim ausführen sofort auf ohne eine Fehlermeldung etc.
Ich nutze MinGW und daraus den gcc ohne zusätzliche Parameter - vermute, dass er dann automatisch den c99 Standard nutzt - weiß es aber nicht!
Wäre nett wenn ihr mir helfen könntet.
-
int main() { struct elem *liste, *element; liste = NULL; struct elem *node = liste; // node zeigt jetzt auf NULL element = (struct elem*) malloc(sizeof(*element)); element->value = 9; element->next = NULL; liste = element; // liste zeigt jetzt auf element element = (struct elem*) malloc(sizeof(*element)); element->value = 8; element->next = NULL; printf("liste:%p node:%p", liste, node); node->next = element; // wo zeigt denn node hin? siehe Zeile 6 node = node->next; printf("%d %d", liste->value, liste->next->value); system("pause"); return 0; }
-
alles klar jetzt seh ich den Fehler, denn node Zeigt immer noch auf NULL
Wie müsste ich node verändern, dass es funktioniert?
also irgendwie vermute ich, dass ich **node = &liste; machen muss, so dass er nicht auf Null sondern auf die Liste Zeigt und dann kann ich mit node auch irgendwie auf next zeigen
könnte es bitte iwer korrigieren, so dass es funktioniert ich mach da immer noch was falsch
-
habs
struct elem **node = &liste;
(*node)->next = element; node = &((*node)->next);
Danke an alle!
-
Zu umständlich.
Verzichte auf node.
-
und wie soll ich dann meinen anchor - liste wiederfinden?
-
Über die Variable liste
Dafür ist sie ja da.
-
wenn ich die variable liste verschiebe finde ich ja die wurzel nicht mehr oder ich muss eine doppelt verkettete Liste machen
-
Du sollst doch liste nicht verschieben. liste ist der Startpunkt
Du hast aber nur zwei Einträge in die Liste. Daher brauchst du node nicht.
Wenn doch, dann reicht ein
node = liste;
auch aus.