Struct in Einfach verkette Liste
-
Hallo, ich habe die Aufgabe den Inhalt der Folgende verkette Liste (Personen) auszugeben, bzw. in umgekehrter Reihenfolge (rekursiv gelöst) auszugeben.
Ich weiß, dass meine Ausgabefunktionen falsch sind, aber mir ist einfach nicht klar, wie ich auf ein struct innerhalb einer Liste zugreifen kann.
Über Hilfe wäre ich sehr dankbar.//struct typedef struct { char name[30]; char vorname[30]; } person_t; //linked list typedef struct perslistelement { person_t pers_obj; struct perslistelement *next; } PersListElement; //Ausgabe der Personen void printPersList(PersListElement *p) { if(p==NULL) return printf("%d", p->pers_obj); } //In umgehekrter Reihenfolge void printReversePersList(PersListElement *p) { int i; if(p == NULL) return; printReversePersList(p->next); printf("Element: %d ", p->pers_obj); } //In main werden dem struct folgende Inhalte mitgegeben p = insertPerson(p, "Mustermann", "Manfred"); p = insertPerson(p, "Musterfrau", "Melanie");
-
Der Member pers_obj der struct perslistelement ist vom Typ person_t.
Da das kein
int
ist, ist %d der falsche Formatspecifier.Du brauchst nicht suchen, für person_t gibt es keinen. Du musst die Member der
struct
einzeln ausgeben.
Da dies vom Typchar[]
(bzw.char*
) sind, kannst du da %s nehmen.Der Unterschied zwischen vorwärts und rückwärts, ist die Position vom
printf
(vor oder nach dem rekursiven Aufruf)
-
Und da ist ja mein Problem, wie gebe ich die Inhalte vom struct einzeln aus, wenn ich über pers_object darauf zugreifen muss?
Wenn ich %d schreibe, gibt er mir eine Reihe von zahlen aus, bei %s bricht er bisher noch sofort ab.
-
printf("%s\n", p->pers_obj.name); printf("%s\n", p->pers_obj.vorname);
-
Wie greifst du auf die Member einer
struct
zu?Wenn du direkt eine
struct
hast, mit dem . Operator
Bei einem Zeiger mit dem -> Operator.printf("%s", p->pers_obj.name); // p Ist der Zeiger, pers_obj aber nicht
-
Achso.
Ja gut, da hat es gerade "klick" gemacht.
Danke dir.