flashpixx Geschrieben 4. Januar 2011 Geschrieben 4. Januar 2011 Ich würde Dir raten, bevor das hier endlos wird, tritt mal Deinen ganzen Code in die Tonne. Es hat keinen Sinn, wenn Du anfängst immer wieder rum zu bauen ohne Sinn und Verstand. Dann fang' auf einem Blatt Papier an: Wie sieht ein Listenelement aus. Wie sieht dann eine Liste aus (einen Hinweis hatte ich schon gegeben). Wie sieht der Algorithmus für Einfügen und Löschen aus. Wenn Du das hast, dann programmierst Du das, d.h. Du definierst, das Listenelement, dann die Liste. Das solltest Du für den Anfang in einzelne Dateien packen (Header) Wenn Du das hast, dann fängst Du an ein Testprogramm zu schreiben, d.h. nur dort werden Datensätze erzeugt und auch wieder frei gegeben. Die Liste arbeitet nur (!) mit Zeigern und damit auf Referenzen auf den Daten. Zitieren
IltisvdT Geschrieben 4. Januar 2011 Autor Geschrieben 4. Januar 2011 @flashpixx Das hatte ich auch schon zu einem früheren Zeitpunkt überlegt. Aber im Moment ist es so, dass das ganze ding funktioniert, nur, dass er das erste Listenelemnt nicht mitsortiert. Und deswegen alles funktionierende in die Tone zu treten widerstrebt mir etwas. Mein sortiert einfügen ist jetzt so: void sortiert_einfuegen(struct stringList **liste, struct stringList *Neu) { struct stringList *Tail; struct stringList *Tail2=NULL; if (*liste == NULL) {*liste = Neu; printf("01\n"); } else { Tail=*liste; printf("02\n"); while ((strlen((Tail)->zeichen))<(strlen(Neu->zeichen))) {printf("06\n"); if(Tail->next==NULL) break; Tail2=Tail; Tail = Tail->next;} printf("07\n"); if(Tail2==NULL) { Neu->next=Tail; *liste=Neu; } else { Neu->next = Tail; Tail2->next=Neu; } } } das muss doch irgendwie funktionieren...nur sortiert er nciht richtig. Aber wenigstens stürzt er nciht ab... Zitieren
Klotzkopp Geschrieben 4. Januar 2011 Geschrieben 4. Januar 2011 Du brichst deine Schleife zu früh ab. Tail soll ja auf das Listenelement zeigen, vor dem du einfügen willst. Da du aber schon rausspringst, wenn Tail->next NULL ist, kannst du nie hinter dem letzten Element einfügen. Brich erst ab, wenn Tail selbst NULL ist. Dann zeigt Tail2 auf das letzte Element, und es sollte funktionieren. Man könnte sich jetzt noch über die Variablennamen streiten. Tail und Tail2 sind nicht gerade treffend Zitieren
IltisvdT Geschrieben 4. Januar 2011 Autor Geschrieben 4. Januar 2011 Habe jetzt in dem if, wo das break drin ist aus Tail->next ein Tail gemacht, jetzt stürzt es ab, wenn ein Eintrag länger ist als alle anderen. Kürzer geht, nur länger nicht... Zitieren
flashpixx Geschrieben 4. Januar 2011 Geschrieben 4. Januar 2011 Nur mal so eine Frage: Hast Du überhaupt einen Überblick was Du da genau machst !? Zitieren
Klotzkopp Geschrieben 4. Januar 2011 Geschrieben 4. Januar 2011 Die Prüfung auf Tail == NULL muss ganz ans Ende der Schleife. Zitieren
IltisvdT Geschrieben 4. Januar 2011 Autor Geschrieben 4. Januar 2011 Ihr seid die besten....alles läuft...supergut. Bin total glücklich. Das war aber auch ne schwere Geburt..danke danke danke.... Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.