Witam, mam problem z wyświetlaniem elementów listy dwukierunkowej, mianowicie wyświetla mi jedynie pierwszy element listy. Pewnie coś ze wskaźnikami źle zrobiłem, proszę o pomoc.
using namespace std;
struct element
{
int wartosc;
string *imie;
string *nazwisko;
element *nast;
element *pop;
};
//-------------globalny wskaznik na pierwszy i ostatni element------------------
element *pierwszy = NULL;
element *ostatni = NULL;
//--------------------------------funkcje---------------------------------------
//---------------------------dodawanie elementu---------------------------------
void dodaj(int x, string *y, string *z)
{
if(pierwszy == NULL)
{
pierwszy = (element*)malloc(sizeof(element));
pierwszy->wartosc = x;
pierwszy->imie = y;
pierwszy->nazwisko = z;
pierwszy->nast = NULL;
pierwszy->pop = NULL;
ostatni = pierwszy;
}
else
{
element *e = (element*)malloc(sizeof(element));
pierwszy->wartosc = x;
pierwszy->imie = y;
pierwszy->nazwisko = z;
ostatni->nast = e;
e->pop = ostatni;
e->nast = NULL;
ostatni = e;
}
}
//--------------------------------wyswietlenie listy----------------------------
void wypisz()
{
element *tmp = pierwszy;
while(tmp != NULL)
{
printf("%d ", tmp->wartosc);
printf("\t");
printf("%s ", &tmp->imie);
printf("\t");
printf("%s ", &tmp->nazwisko);
printf("\n\n");
tmp = tmp->nast;}
printf("\n\n");}