Einfache Verkettete - Element ändern?
-
Hallo, ich habe die verketteten Listen für mich entdeckt und die sind auch eine super Sache......
Das habe ich bisher, also eine verkettete Liste wo ich was drin speichern kann. Klappt auch alles prima.struct liste { int idx; char name[80]; char vorname[80]; char ort[80]; struct filelist *next; }; struct liste *next =NULL; struct liste *begin=NULL;
void listeappend(int idx,char n[],char v[],char o[]) { struct liste *pointer; if(begin == NULL) { begin =(struct liste *) malloc(sizeof(struct liste)); begin->idx=idx; strcpy(begin->name,n); strcpy(begin->vorname,v); strcpy(begin->ort,o); begin->next=NULL; } else { pointer=begin; while(pointer->next != NULL) pointer=listpointer->next; pointer->next =(struct liste *) malloc(sizeof(struct liste)); pointer=pointer->next; pointer->idx=idx; strcpy(pointer->name,n); strcpy(pointer->vorname,v); strcpy(pointer->ort,o); pointer->next=NULL; } }
Jetzt ist die Sache aber die, dass es im Programm so passiert, dass ich mal nur den Index und Namen bekomme, ohne Ort und Vorname. Ist ja auch alles noch kein Problem, fehlt halt was... aber wenn ich dann den gleichen Index mit dem fehlenden Ort und Vorname bekomme, dann möchte ich gern diese beiden Daten in das schon bestehende Element hinzufügen, es quasi ändern. Das sollte dann nach möglichkeit nicht in eine extra Funktion sein, sondern listeappend(..) sollte so clever sein um das zu sehen
-
In Zeile 18 ist ein Fehler, natürlich
pointer=pointer->next;
-
Hallo,
hast du denn schon eine Funktion, die die Liste durchlaufen kann (z.B. zur Ausgabe)? Die müsstest du dann nur in listeappend einbauen bzw. so umschreiben, dass, wenn ein Element mit gleichem Index gefunden wird, dieses Element mit den fehlenden Daten geändert/ergänzt wird. Schaffst du das? Probiere es zumindest...
MfG,
Probe-Nutzer
-
Probe-Nutzer schrieb:
Hallo,
hast du denn schon eine Funktion, die die Liste durchlaufen kann (z.B. zur Ausgabe)? Die müsstest du dann nur in listeappend einbauen bzw. so umschreiben, dass, wenn ein Element mit gleichem Index gefunden wird, dieses Element mit den fehlenden Daten geändert/ergänzt wird. Schaffst du das? Probiere es zumindest...
MfG,
Probe-Nutzer
Ja, die Funktion habe ich:
struct liste *pointer; pointer=begin; while(pointer != NULL) { // Ausgabe }
Daran hab ich auch schon gedacht, aber dieses einbauen bekomme ich nicht wirklich hin. Meine Versuche enden im Segmentation fault.
-
Zeig' doch mal Ausgabe bzw. die ergänzte Funktion, dann kann man sehen, wo das "Unglück" passiert.
MfG,
Probe-Nutzer
-
Ich konnte mir wohl doch noch selbst helfen