Variablen in Schleife deklarieren (verkettete Liste)



  • Folgende Funktion habe ich zur Erstellung einer verketteten Liste geschrieben...

    LIST* anlegen(){
    LIST* element1=(LIST*)malloc(sizeof(LIST));
    LIST* element2=(LIST*)malloc(sizeof(LIST));
    LIST* element3=(LIST*)malloc(sizeof(LIST));
    LIST* element4=(LIST*)malloc(sizeof(LIST));
    LIST* element5=(LIST*)malloc(sizeof(LIST));
    element1->wert=10;
    element1->Next=element2;
    element2->wert=20;
    element2->Next=element3;
    element3->wert=30;
    element3->Next=element4;
    element4->wert=40;
    element4->Next=element5;
    element5->wert=50;
    element5->Next=NULL;
    return element1;
    }

    Jetzt meine Frage: Kann ich die Deklaration von element1 bis element5 mittels einer for-Schleife automatisieren?



  • Ja, wenn du sie in einem Array ablegst.

    P.S.: In C nicht die Rückgabe von malloc casten!



  • Danke für die Antwort.
    Ich habe noch eine Frage:

    #include<stdio.h>
    struct liste{
    int wert;
    struct liste* nachfolger;
    };

    Kannst Du mir vielleicht erklären was bei "struct liste* nachfolger;" genau passiert?



  • Da wird einfach ein Zeiger vom Typ struct liste angelegt (der dann auf das nächste Glied der Kette zeigen soll).



  • Es geht auch sowas:

    TMyList *root, *run;
    int i;
    
    root = (TMyList*)malloc(size_of(TMyList));
    run = root;
    
    for(i=0; i<5; i++) {
      run->pNext = (TMyList*)malloc(size_of(TMyList));
      run = run->pNext;
    }
    

    Dann hast du ne schöne Schleife.



  • "size_of" ist kein ANSI C.


Anmelden zum Antworten