Zabieramy się za następne hasło programistyczne, o którym wszyscy wiedzą, tylko jak przychodzi co do czego, to jest problem żeby zdefiniować 😅. Mianowicie, struktura danych. Co to takiego? Zapraszam do środka!
STRUKTURA DANYCH NASTĘPNYM HASŁEM , KTÓRE NIE MOŻE BYĆ CI OBCE!
Parę wpisów temu wyjaśniliśmy sobie czym jest tablica. Jest to statyczna struktura danych. Właśnie. Co to znaczy "struktura" 😐? Co to znaczy, że jest statyczna albo dynamiczna 🤔? Rzucę trochę światła na tę sprawę 💡.
Z definicji, struktura danych to metoda składowania danych w pamięci operacyjnej. Nauka zna mnóstwo różnych metod zapisu danych i przechowywania w jednym "składziku", tak żeby było między nimi jakieś powiązanie (czy to przez typ danych, czy inną składową, to już zależy). Kluczowymi jej aspektami są zawsze procedury dodawania i usuwania z niej elementów ℹ️. Może być także wyszukiwanie, jednak nie wszystkie struktury danych wspierają metody zwracania szukanego elementu, gdyż sposoby przechowywania są bardzo różnorodne. Mogą to być proste i intuicyjne, jak choćby stos przypominający prawdziwy stos talerzy, ale są też takie, których nie sposób sobie wyobrazić odzwierciedlenia w rzeczywistości, jak np. drzewo czerwono-czarne 😳. Dochodząc do wniosku, że przyszły programisto po prostu musisz to kurde wiedzieć czym jest struktura danych, postanowiłem zrobić z tego temat na artykuł, który teraz czytasz 📖. Tak w dużym skrócie wygląda sytuacja.
STATIC VS. DYNAMIC
Wspominałem o tym, że struktura danych może być zarówno statyczna, jak i dynamiczna. Celem skonfrontowania sobie dwóch rodzajów struktur danych, postawmy obok siebie tablicę i listę wiązaną.
Tablica pełni rolę struktury statycznej. Opisałem ją szczegółowo w osobnym artykule, natomiast z grubsza chodzi o to, że jej rozmiar inicjujemy już podczas pisania kodu i jest on potem niezmienny ℹ️. O to chodzi w tej statyczności. Co ciekawe, jak spojrzymy na listę wiązaną, to tam już mamy swobodę w elastycznym "rozciąganiu" i "skurczaniu" rozmiaru w trakcie działania programu, dlatego też lista jest strukturą dynamiczną.
Oczywiście, "of course", wszystko w dziedzinie informatycznej podporządkowane jest regule "coś za coś". Nie da się zmieniać w efektywny sposób rozmiaru tablicy od ręki, poza utworzeniem nowej instancji i przeniesienia wszystkich danych jedna po drugiej (o Boże 😱!) 😐. Mamy za to bezpośredni dostęp do wszystkich elementów, do których przedostajemy się poprzez indeks 💪. Lista wiązana nie posiada zdolności zwracania danego elementu w trybie natychmiastowym jak tablica (musi przejść po wszystkich elementach, jak po nitce do kłębka) 😐, ale za to może dowolnie zmieniać swoje rozmiary na potrzeby tworzonego oprogramowania i w tym zakresie to tablica jest "położona na łopatki" 💪. Widzisz? Nie ma zalet bez wad 😇!
Struktura danych została wyjaśniona. Wiemy jaka jest definicja, jakie są jej typy i dlaczego każdy prawdziwy programista musi o tym wiedzieć ☺️.