problem z linked lista

0

Witam, napisałem pewien kod który się wysypuje gdy pętlą for wywołuje funkcje lladd(); jak ręcznie wpisze sobie kilka razy(bez pętli) tą funkcję to działa.
Może mi ktoś wytłumaczyć dlaczego tak się dzieje?

 
  main.cpp:

#include "linkedList.h"

using namespace std;

int main()
{
    linkedList *mojall;
    for(int i=0;i<3;i++)
    {
        lladd(mojall,2);
    }
    return 0;
}


linkedList.h:

#include <string>
#include <algorithm>
#include <fstream>
using namespace std;

class element
{
  public:
    int dane;
     element *nastepny;
};

class linkedList
{
  public:
    element *start;
};

    void lladd(linkedList *lista,int dana)
    {
        element *nowy = new element;
        nowy->dane=dana;
        nowy->nastepny=lista->start;
        lista->start=nowy;
    }

    void llprint(linkedList *lista)
    {
        element *ptr=lista->start;
        while(ptr)
        {
            printf("%i\n",ptr->dane);
            ptr=ptr->nastepny;
        }
    }
1

linkedList *mojall;

Utworz obiekt.

0

zrobiłem:

linkedList *mojall=new linkedList;

ale funkcja

llprint();

wpada w jakąś nieskończoną pętle gdy jako argument podam mojall

1

coś słabo robisz to co napisał @n0name_l. Poprawiłem Twój main i mi wyświetla wszystko

 
int main()
{
    linkedList *mojall;
    mojall = new linkedList();
    for(int i=0;i<3;i++)
    {
        lladd(mojall,2);
    }
    llprint(mojall);
    return 0;
}

a co będzie gdy w llprint podamy nulla? lub "usunięty obiekt"? (popatrz na funkcje i się zastanów)

0

Dzieki za poprawienie kodu, nie wiedziałem ze tam musza być nawiasy :(
a co do null i innych to funkcje będę zabezpieczał if-ami

1 użytkowników online, w tym zalogowanych: 0, gości: 1