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.
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...
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
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...
flashpixx Geschrieben 4. Januar 2011 Geschrieben 4. Januar 2011 Nur mal so eine Frage: Hast Du überhaupt einen Überblick was Du da genau machst !?
Klotzkopp Geschrieben 4. Januar 2011 Geschrieben 4. Januar 2011 Die Prüfung auf Tail == NULL muss ganz ans Ende der Schleife.
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....
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden