verkette Listen Typdefinition



  • Hallo Leute!

    Ich möchte jetzt versuchen mit verketteten Listen zu arbeiten.
    Habe zunächst folgendes schon geschrieben:

    typedef struct lstyp *nodeptr;
    
       struct lstyp
       {
          double wert;
          nodeptr *next;
       };
    
       nodeptr newptr;
       newptr = (nodeptr)malloc(sizeof(struct lstyp));
       newptr->wert = 3.2123;
       cout << newptr->wert;
    
       getch();
    

    Allerdings erhalte ich folgende Fehlermeldung:
    " Error: verketteteListe.cpp(21,16):'wert' is not a member of 'lstyp' "

    Ich kann diese Fehlermeldung nicht nachvollziehen, da wert auf jeden Fall
    ein member von lstyp ist.

    Hoffe ihr könnt mir weiterhelfen.
    Danke.

    alex



  • Hallo!

    So wie ich es sehe, hat die Typdefinition einen Fehler.
    Es müsste heissen:

    ....
    nodeptr next;
    .....

    da nodeptr in der typedef Direktive ja schon als Pointer deklariert wurde.
    Zudem solltest du in C++ mit dem new operator dynamischen Speicher allozieren, nicht mehr mit malloc (bei Klassen hat das z.B. den Nachteil, dass der Konstruktor nicht ausgeführt wird)
    Die Fehlermeldung kann ich mir jetzt aber aucvh nicht so direkt erklären.
    Da ich grad in einer Übung auf der Uni sitze 😉

    kann ich es jetzt leider auch nicht testen. Versuch mal das typedef wegzunehmen und versuchs mit new

    struct lsTyp
    {
        double wert;
        lsTyp *ptrNext;
    };
    
    lsTyp* ptrStart;
    ptrStart=new lsTyp();
    ptrStart->wert=100;
    cout<<(ptrStart->wert);
    


  • Vielen Dank für diese Lösung.
    Mir liegt es aber sehr am Herzen das Programm so wie oben zu lösen, weil unser Prof diese Lösung uns auferlegt hat. Deine Lösung sieht auch super aus und sie läuft auch bei mir, aber da mich auch andere Lösungen interessieren, wollte ich das Problem wie schon gesagt wie oben lösen.
    Ich bin mir auch sicher, dass es irgenwie gehen muss auf diese Art.
    Hoffe, es gibt jemanden, der meine obengenannte Fehlermledung versteht.
    Danke.



  • Mir war es auch wichtig mit dieser Typdefinition neue Funktionen zu schreiben.
    Beispielsweise wollte ich eine Funktion vom typ nodeptr (siehe oben) schreiben, die auch eine Variable vom selben Typ bekommt und dann in eine verkettete Liste einbindet.
    Hoffe jemand weiß es.

    ciao


Anmelden zum Antworten