Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

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.

@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...

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 ;)

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...

Ihr seid die besten....alles läuft...supergut. Bin total glücklich. Das war aber auch ne schwere Geburt..danke danke danke....:)

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.