verkettete liste



  • hallo hab hier eine doppelt verkettete liste und eigentlich sollte alles funktionieren aber mir wird die meldung bei dem listenende angezeigt dass die elementfunktion aufgerufen oder ihre adresse übernommen werden muss. kann sich das vielleicht jemand mal anschauen:

    #include <iostream>
    #include <string>
    #include <conio>
    
    using namespace std;
    
    class knoten
    {
            private:
              double daten;
              knoten* next;
              knoten* last;
    
            public:
              void init();
              void neu(double);
              void ausgabe();
              void ende();
              void back();
    };
    
    knoten* anfang;
    knoten* temp;
    knoten* ende;
    
    void knoten::init()
    {
            anfang = new(knoten);
            anfang->daten=0;
            anfang->next=NULL;
            anfang->last=NULL;
    
    }
    
    void knoten::neu(double d)
    {
            temp=anfang;
            while(temp->next!=NULL)
                    temp=temp->next;
    
            temp->next= new(knoten);
            temp->next->last=temp;
            temp=temp->next;
            temp->daten=d;
            temp->next=NULL;
            ende=temp;
    
    }
    
    void knoten::ausgabe()
    {
            temp=anfang;
            cout<<temp->daten<<endl;
            while(temp->next!=NULL)
            {
    
                    temp=temp->next;
                    cout<<temp->daten<<endl;
            }
    }
    
    void knoten::back()
    {
            temp=ende;
            cout<<temp->daten<<endl;
            while(temp->last!=NULL)
            {
                    temp=temp->last;
                    cout<<temp->daten<<endl;
            }
    }
    
    void knoten::ende()
    {
            delete(anfang);
            delete(ende);
            delete(temp);
    }
    
    knoten* element;
    
    int main()
    {
            element = new(knoten);
            element->init();
            for(int i=1;i<=10;i++)
            {
            element->neu(i);
            }
            element->ausgabe();
            element->back();
            element->ende();
            delete(element);
            getch();
            return 0;
    }
    


  • Der Fehler wird in Zeile 46 angezeigt, wenn ich das letzte element dem zeiger auf das listenende übergebe. Aber das will irgendwie nicht funktionieren.



  • Der Name "ende" kennzeichnet bei dir eine Memberfunktion (73) und eine Membervariable (24). Da Compiler nimmt hier zuerst die Funktion. Bennenne einfach eins von beiden um.



  • Ach Danke wie dumm von mir hab ich gar nicht bemerkt 🙄 🙄 🙄 🙄 🙄


Anmelden zum Antworten