Einfach verkettete Liste

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Einfach verkettete Liste

    Hallo,

    habe ein kleines Problem in c.

    Ich hab eine einfach verkettete Liste.

    Quellcode

    1. struct liste{
    2. int data;
    3. struct liste *next;
    4. }
    5. anfang;


    Ich habe mir ne methode gebastelt um em ende ein element eingefügt wird.

    Quellcode

    1. struct liste* in(int element, struct liste *start){
    2. struct liste *startneu = (struct liste *) malloc(sizeof(struct liste)); //hier ist der Fehler
    3. startneu -> next = start;
    4. startneu -> next = element;
    5. return startneu;
    6. }


    Was muss noch in die Klammer nach malloc und warum?

    Danke und Grüße

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von ul7ima ()

  • Öhm, negativ, am malloc ist doch gar nichts verkehrt? Es alloziiert genau so viel Speicher wie eine liste-Instanz benötigt.
    Und genau das brauchst du ja um ein Element anzuhängen.

    Es ist btw. etwas verwirrend wenn du von einer Funktion sprichst die ein Element ans Ende anhängt, aber eins Postest die einen neuen Anfang erstellt.

    Wenn man also davon absieht dass in Zeile 4 bei der Wertzuweisung statt auf next auf data verwiesen werden muss, ist die Funktion doch OK?
    Es seiden du willst wirklich ein Element an das andere Ende anhängen: In dem Fall ist das vorgehen etwas anders:
    1. Letztes Element suchen (wo .next == NULL)
    2. neues Element erstellen (genauso wie hier) und füllen (.data = Wert, .next = NULL)
    3. das .next des alten Elements auf das neue verweisen lassen