Cześć,
mam małe pytanko. Niestety nie znalazłem wielu źródeł informacji o wskaźnikowych strukturach listowych, moja wiedza opiera się na tym co wyniosłem z wykładu, a także co znalazłem w tym artykule. Oto co w wyniku tak zdobytej wiedzy skleiłem:
#include <iostream>
using namespace std;
main()
{
struct osoba {
int wiek, wzrost;
osoba* nastepna = 0;
};
osoba* pierwsza = 0;
osoba* nowa = new osoba;
cin >> nowa->wiek;
cin >> nowa->wzrost;
if (pierwsza == 0)
pierwsza = nowa;
else {
osoba* temp = pierwsza;
while (temp->nastepna) {
temp = temp->nastepna;
}
temp->nastepna = nowa;
nowa->nastepna = 0;
}
}
program się kompiluje więc de facto uznaję to za sukces. Mam jednak wątpliwości co do tej linijki. Jest ona żywcem skopiowana z powyższego linku
while (temp->nastepna) {
temp = temp->nastepna;
}
Czy chodzi tutaj o to, że dopóki temp będzie przesyłać coś do zmiennej nastepna, dopóty będzie to znaczyć, że pamięć jest zajęta? Jeśli tak to dlaczego nie muszę przejść do kolejnej komórki pamięci by sprawdzić, czy jest ona pusta. Mojej teorii przeczy też fakt, że śmieci z pamięci też są "czymś" i mogłby sprawić, że pętla jest bez sensu.