Piszę listę jednokierunkową zbudowaną ze struktury "Wezel" zawierającej obiekt klasy Rower i wskaźnik na poprzedni element. Nie pokazuje błędów kompilatora ale Warning i zaczyna Debugować. Siedzę nad tym dłuższą chwilę i nie znalazłem co jest źle. Proszę o pomoc.
#include <iostream>
#include <string>
using namespace std;
class Rower
{
public:
string marka;
Rower()
{
marka = "Giant";
};
~Rower()
{};
};
#include <iostream>
#include "Lista.h"
#include <algorithm>
using namespace std;
Lista::Lista()
{
pierwszy = NULL;
liczba_elementow = 0;
};
Wezel* Lista::zwrocWskaznikWezla(unsigned int index)
{
Wezel *wezel = pierwszy;
for (int i = 0; i < index; i++)
{
if (wezel == NULL)
return NULL;
wezel = wezel->p;
}
return wezel;
};
void Lista::push_back(const Rower &s)
{
Wezel *nowy_wezel = new Wezel();
nowy_wezel->s = s;
nowy_wezel->p = NULL;
if (liczba_elementow == 0)
pierwszy = nowy_wezel;
else
{
Wezel *tmp;
tmp = zwrocWskaznikWezla(liczba_elementow - 1);
nowy_wezel->p = tmp;
}
liczba_elementow++;
};
void Lista::pop_back()
{
if (liczba_elementow < 2)
{
delete pierwszy;
pierwszy = NULL;
}
else
{
Wezel *tmp = zwrocWskaznikWezla(liczba_elementow - 1);
delete tmp->p;
tmp->p = NULL;
}
liczba_elementow--;
};
void Lista::usunElementListy(unsigned int index)
{
index = min((int)index, liczba_elementow - 1);
if (liczba_elementow == 1)
{
pop_back();
return;
}
if (index > 0)
{
Wezel *poprzedni_niz_kasowany, *nastepny_po_kasowanym;
poprzedni_niz_kasowany = zwrocWskaznikWezla(index - 1);
nastepny_po_kasowanym = poprzedni_niz_kasowany->p->p;
delete nastepny_po_kasowanym->p;
nastepny_po_kasowanym->p = poprzedni_niz_kasowany;
}
liczba_elementow--;
};
int Lista::size()
{
return liczba_elementow;
};
Rower& Lista::operator[](int index)
{
return zwrocWskaznikWezla(index)->s;
};
Lista::~Lista()
{
while (liczba_elementow > 0)
pop_back();
};
void Lista::stworzNowyWezelNaKoncu(Wezel *pierwszy, int liczba_wezlow)
{
Wezel *tymczasowy = pierwszy;
Wezel *nowy = new Wezel();
for (int i = 0; i < liczba_wezlow - 1; i++)
tymczasowy = tymczasowy->p;
nowy->p = tymczasowy;
nowy->p = pierwszy;
};
void wypiszRowery(Wezel *w, int liczba_wezlow_do_przejscia)
{
Wezel *tymczasowy = w;
for (int i = 0; i < liczba_wezlow_do_przejscia; i++);
{
cout << tymczasowy->s.marka << "\tnastepny wezel pod adresem: ";
cout << tymczasowy->p << endl;
tymczasowy = tymczasowy->p;
}
};