Cześć,
mam kod listy jednokierunkowej, uporządkowanej, program się kompiluje, wszystko jest ok, jednak staram się go zrozumieć, większość zakomentowałem, aby jakoś to sobie wytłumaczyć, ale jak na razie wskaźniki to nie jest moja mocna strona, mogę liczyć na pomoc w wytłumaczeniu tego ostatniego fragmentu kodu? - od curr=head
#include <iostream>
struct Node { //zdefiniowanie struktury
int value;
Node* next;
Node(int valueP) {
value = valueP;
next = NULL;
}
}
class List {
private:
Node* head; //tworzenie g³owy listy
public:
List() {
head = NULL; //na samym pocz¹tku lista powinna byæ pusta
}
~List() { //destruktor
Node* toDelete;
while (head) { //dopoki head nie jest null
toDelete = head;
head = head->next; //przesunąć headem po kolejnych elementach listy
delete toDelete;
}
}
void add(int value)
{
if (head == NULL) {
head = new Node(value); //inicjowanie nowego elementu
return;
}
Node* curr; //wskaźnik na element listy gdzie ma być dodana kostka
if (value < head->value) { //dodawanie uporzadkowane
curr = new Node(value); //tworzy nowy element
curr->next = head; //następnym elem. po naszym nowym ma być ten który był headem
head = curr; //head od teraz musi pokazywać na nowy element
return;
}
----------
curr = head;
Node* next = curr->next;
while (next)
{
if (value == next->value) {
return;
} if (value < next->value) {
curr->next = new Node(value);
curr->next->next = next;
return;
}
curr = next;
next = curr->next;
}
curr->next = new Node(value);
}