[C++] Lista jednokierunkowa
: 30 wrz 2015, o 16:24
Chcę napisać prostą, niecykliczną listę jednokierunkową z funkcją dodawania na końcu listy i wyświetlania wszystkich jej elementów po kolei.
Po uruchomieniu program wypisuje tylko jeden element (np: 1A albo 4D).Zauważyłem że zawsze przedostatni.Więc to chyba błąd w funkcji wyswietl() ,ale nie potrafię go zlokalizować.
Kod: Zaznacz cały
#include <iostream>
using namespace std;
class Element
{
public:
int id;
string wyraz;
Element *next;
Element()
{
next=NULL;
}
};
class Lista
{
public:
void dodaj(int _id, string _wyraz)
{
Element *nowy=new Element;
nowy->id =_id;
nowy->wyraz =_wyraz;
if(pierwszy==NULL)
{
pierwszy=nowy;
}
else
{
while(pierwszy->next!=NULL)
{
pierwszy=pierwszy->next;
}
pierwszy->next=nowy;
}
}
void wyswietl()
{
while(pierwszy->next!=NULL)
{
cout<<pierwszy->id;
cout<<pierwszy->wyraz<<endl;
pierwszy=pierwszy->next;
}
};
Element *pierwszy;
Lista()
{
pierwszy=NULL;
}
};
int main()
{
Lista *baza=new Lista;
baza->dodaj(1,"A");
baza->dodaj(2,"B");
baza->dodaj(3,"C");
baza->dodaj(4,"D");
baza->wyswietl();
return 0;
}