No, 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!
Tweet |
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że 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
Chwila. 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, ale 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". Widzicie? 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ć.