Dlaczego warto uczyć się struktur danych w C?
Bo C niczego nie ukrywa. Bez wbudowanej listy, mapy czy kolejki implementujesz każdą strukturę z bloków pamięci i wskaźników, a tym właśnie jest struktura danych. Potem HashMap w Javie i dict w Pythonie to te same idee z zarządzaniem pamięcią zrobionym za ciebie, a ty potrafisz ocenić, ile kosztują.
Co muszę umieć przed nauką struktur danych w C?
Wskaźniki, struktury, tablice oraz malloc i free. Przede wszystkim wskaźniki: lista wiązana to łańcuch pól struct node *next, a drzewo binarne ma dwa takie pola w każdym węźle. Jeśli wskaźniki wciąż są dla ciebie niepewne, kurs C w Coddy omawia je najpierw, za darmo.
Jak zaimplementować tablicę mieszającą w C?
Za pomocą tablicy kubełków, funkcji mieszającej, która zamienia klucz na indeks, i reguły dla dwóch kluczy trafiających do tego samego kubełka: zwykle listy wiązanej w każdym kubełku (łańcuchowanie) albo szukania następnego wolnego miejsca (adresowanie otwarte). Gdy tablica zapełni się ponad ustalony współczynnik wypełnienia, alokujesz większą tablicę i wstawiasz wszystko ponownie. Kurs tablicy mieszającej w pierwszym kroku buduje ją od zera.
Czy C to dobry język na rozmowy rekrutacyjne?
Poza stanowiskami embedded i systemowymi mało kto przechodzi rozmowy w C, bo pisanie tablicy mieszającej od zera w trakcie rozmowy zabiera czas, który inne języki dają za darmo. Wiedza przenosi się jednak w całości, a do C++ jest tylko krok: ta sama składnia plus STL. Częsta droga to nauka struktur w C, a potem pakiety rekrutacyjne w C++, Javie albo Pythonie, które ta ścieżka też oferuje.
Które kursy na tej ścieżce nie są nauczane w C?
Trzy: programowanie dynamiczne i seria rekrutacyjna w Pythonie są nauczane w Pythonie, a operacje na bitach w C++. Są wymienione pod krokami, każdy z linkiem, który otwiera go we właściwym języku. Operacje na bitach najłatwiej śledzić z perspektywy C: C++ zachował operatory &, |, ^, ~, << i >> dokładnie takie, jakie są w C.
Uczyć się struktur danych w C czy w C++?
W C, żeby zrozumieć struktury, w C++, żeby ich używać. W C budujesz wszystko, dlatego tak wiele uczelni uczy tego przedmiotu właśnie w nim; w C++ każdą strukturę budujesz raz, a potem sięgasz po STL, dlatego używają go programiści sportowi. Zaczynając od C i przechodząc do C++, niczego nie tracisz.