einfach verkettete liste



  • Hallo

    Ich brauche bitte eure hilfe
    Ich versuche gerade, eine einfach verkettet Liste aufzubauen.
    Dabei habe ich das Problem,das der next- pointer immer auf das eigene element zeigt, obwohl er auf das nächste zeigen sollte.

    void port::newaccess_unit(access_unit au)
    {
    
        if(aucounter==0)
        {
            this->ps.access_unit_pointer=&au.aui; 
        }
        au.aui.access_unit=&au.aus;
        if(aucounter>0)
        {
            oldAU->aui.next=&au.aui;
            cout<<"TEST2 "<<oldAU->aui.access_unit->info.name<<endl;
            cout<<"TEST3 "<<oldAU->aui.next->access_unit->info.name<<endl;
        }
        oldAU=&au;
        cout<<"TEST1 "<<oldAU->aui.access_unit->info.name<<endl;
        aucounter++;
    
    }
    

    oldAU ist eine globale variable.

    Das komische bei der sache ist, das sich oldAU ändert,bei test2 sollte eigentlich das gleiche rauskommen wie bei test 1, da die variable ja dazwischen nicht geändert wird. Das ist aber nicht der fall, sondern es wird schon das nächste element angegeben, das eigentlich erst mit next geholt werden sollte.

    Ich hoffe ihr habt mein Problem verstanden
    danke im voraus

    mfg kobauder



  • Ich blick durch dein Programm nicht ganz durch, aber es kann gut sein, dass dein Problem darin liegt, dass du au als Wert übergibst. Dadurch zeigt oldAU auf einen Speicherplatz, der nur temporär dem Funktionsparameter zugeteilt ist. Versuch mal eine Referenzübergabe.



  • Tip am Rande: Ein wenig eingängigere Bezeichner würden zur Übersicht beitragen. 🙂



  • Danke für die hilfe!


Anmelden zum Antworten