einfach verkettete Listen



  • Ich hab ein kleines Problem mit folgendem Programm:

    dekl:

    #include <iostream>
    #include <conio>
    
    class Klasse;
    
    class Klasse
    {
    private:
            struct Knoten
            {
            int Inhalt;
            Knoten *pNext;
            };
            Knoten *pFirst;
            Knoten *pLast;
            int Anzahl;
    public:
            Klasse();
            ~Klasse();
            void vorneeinfuegen(int obj);
    };
    

    impl:

    #include "dekl.h"
    
    Klasse::Klasse()
    {
     Anzahl=0;
     pFirst=pLast=NULL;
    }
    
    Klasse::~Klasse()
    {
     Knoten *ptemp = pFirst;
     for(; Anzahl>0; Anzahl--)
     {
      pFirst = pFirst->pNext;
      delete ptemp;
      ptemp = pFirst;
     }
    }
    
    void Klasse::vorneeinfuegen(int obj)
    {
     if(Anzahl == NULL)
     {
      pFirst = new Knoten;
      pFirst->Inhalt = obj;
      pFirst->pNext = NULL;
      pLast = pFirst;
     }
     else
     {
      Knoten *pNew = new Knoten;
      pNew->Inhalt = obj;
      pNew->pNext = pFirst;
      pFirst = pNew;
     }
    Anzahl++;
    }
    

    main:

    #include "impl.cpp"
    
    #pragma hdrstop
    #pragma argsused
    
    int main(int argc, char* argv[])
    {
    
    Klasse k;
    
    k.vorneeinfuegen(1);
    k.vorneeinfuegen(2);
    
    getch();
    return 0;
    }
    

    Immer wenn ich in der main mit "k.vorneeinfuegen()" einen neuen Knoten erstellen will, stürzt der Compiler mit der Fehlermeldung "EStackOverflow" ab. Woran liegt das?

    thx im voraus 🙂



  • Also ich hab eigentlich kein Problem gesehen. Du solltest aber auf jeden fall

    if(Anzahl == NULL)
    

    mit

    if(Anzahl == 0)
    

    oder

    if(!Anzahl)
    

    ersetzen, da man NULL im allgemeinen für Zeiger verwendet, und das doch etwas verwirren könnte

    Auch beim testen mit dem g++ stürzt das bei mir nicht ab.

    Das Problem muss an einer anderen stelle liegen.

    BR
    evilissimo



  • okay - danke 🙂


Anmelden zum Antworten