Witajcie! Postanowiłem zmierzyć się ze strukturami danych. Nie jestem kompletnym żółtodziobem, ponieważ w liceum miałem styczność z programowaniem. Nie przykładałem się jednak i ostrzegam że mój kod jest dość niechlujny - nigdy nie nauczyłem się standardowych nawyków w formatowaniu i komentowaniu kodu (co mam nadzieję w niedalekiej przyszłości nadrobić).
Ale do rzeczy. Zamieszczam kod implementacji najprostszej listy jednokierunkowej mojego autorstwa. Póki co napisałem funkcję wyświetlającą zawartość listy oraz dodającą na jej końcu kolejny element.
Proszę o opinię i konstruktywną krytykę, ponieważ zamierzam w ramach nauki także napisać implementacje innych operacji na tej liście. Jeżeli w moim rozumowaniu są luki i błędy proszę mi je bezlitośnie wytknąć. Dziękuję z góry za konstruktywną krytykę.
struct element_listy
{
float dana; // przykładowa wartość
element_listy *next; // wskaźnik na następny element
};
void PokazListe(element_listy* &poczatek)//dostaję wskaźnik na pierwszy element
{
if (poczatek->next == NULL) std::cout << "Lista jest pusta!"; //jeżeli element jest pusty to wypisuję że lista pusta
else //jeżeli nie jest pusty to
{
element_listy* temp = poczatek; // kopiuję element to zmiennej tymczasowej
while (temp != NULL)//dopóki nie trafię na ostatni element
{
std::cout << temp->dana<< std::endl;//wypisuję dane
temp = temp->next;//przypisuję do zmiennej tymczasowej kolejny element
}
}
}
void DodajElement(element_listy* &poczatek, float &data)//dodawanie elementu na końcu listy
{
element_listy* nowy = new element_listy;//tworzę nowy element listy
nowy->next = NULL; //będzie ostatni więc ustawiam mu null na wskaźniku next
nowy->dana = data;//ustawiam mu jakąśtam wartość
element_listy* wskaznik = poczatek;//tworzę wskaznik tymczasowy wskazujący na kolejne elementy listy i ustawiam go na pierwszym elemencie
while(wskaznik->next != NULL)//dopóki nie trafię na ostatni element
{
wskaznik = wskaznik->next;//przechodzę na następny element tj. przypisuję jego adres do tymczasowego wskażnika
}
wskaznik = nowy; //jeżeli wskaźnik jest pusty to przypisuję mu wcześniej utworzony nowy element
}