Avatar billede nexus-6 Nybegynder
23. august 2002 - 08:17 Der er 2 kommentarer og
1 løsning

Fejl i hægtede liste ??

Hej eksperter
Nogen der kan fortælle mig hvad der er galt med mit program.
Programmet er ikke andet end en hægtede liste, jeg får ingen 'errors' når jeg compiler det, men når jeg afvikler programmet får jeg en 'access violation'.
Hvorfor ?

Her er koden:

class list {
   
    private:
        node *pHead, *pTail;
       
    public:
       
        void appendnode(int data){
            node *pNode;
            pNode->data = data;
            if(pHead == NULL){
                pHead = pNode;
                pNode->pPrev = NULL;
            }else{
                pTail->pNext = pNode;
                pNode->pPrev = pTail;
            }
           
            pTail = pNode;
            pNode->pNext = NULL;
        }
};

int main(int argc, char* argv[])
{
    int data =3;
    list liste_1;
    liste_1.appendnode(data);

    return 0;
}
Avatar billede chries Nybegynder
23. august 2002 - 08:51 #1
ja det vil jeg nok sige, her er et par :-)

f.eks, her opretter du en pointer til ingenting og derefter klader du på den!

node *pNode;
pNode->data = data;

->

node *pNode = new node();

if( pNode == NULL )
{
  //fejl
}

du har ingen contructor, der initialiserer din member varibale til NULL.

class list {
    list() {pHead = NULL; pTail = NULL;}   

    private:
        node *pHead, *pTail;
Avatar billede chries Nybegynder
23. august 2002 - 08:54 #2
de glemter at pege med pTail, når du indsætter første node:
            if(pHead == NULL){
                pHead = pNode;
                pNode->pPrev = NULL;
->
            if(pHead == NULL){
                pHead = pNode;
                pTail = pNode;
                pNode->pPrev = NULL;
Avatar billede chries Nybegynder
23. august 2002 - 08:55 #3
ups glem den sidste , nå ikke langt nok i koden :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester