Biorę swój drugi kurs na Javie. Wchodzimy w struktury danych. Zrobiłem zadanie na połączonej liście, a teraz stosie. Trudno mi było z połączoną listą. Stos sprawił mi trochę kłopotów, ale był o wiele łatwiejszy.
Czy powinienem martwić się trudnościami z tymi algorytmami i strukturami danych? Po prostu czuję, że tak naprawdę tego nie zrozumiałem.
algorithms
data-structures
Śmierdziel
źródło
źródło
Odpowiedzi:
Myślę, że nie wolno wam nie rozumieć tych rzeczy, ponieważ są one naprawdę fundamentalne. To powiedziawszy, ich niezrozumienie nie jest niczym złym. Możesz wyjaśnić dziecku powiązaną listę. Jeśli więc nauczyciel nie wyjaśnił ci ich, to tyle samo ich wina. Więc nie powinieneś tracić czasu na martwienie się, ale raczej staraj się znaleźć ludzi, którzy mogą ci to wytłumaczyć. Często kolega jest o wiele lepszym nauczycielem niż nauczyciel akademicki.
Pomyśl o pociągach
Wyobraź sobie, że masz zestaw wagonów kolejowych, w których każdy wagon ma wystarczającą pojemność, aby pomieścić jedną część danych. Każdy wózek ma na swoim końcu hak, który można przymocować z przodu innego wózka.
Daje to w rzeczywistości połączoną listę:
W przeciwieństwie do tego, możesz myśleć o tablicy jako pociągu z określoną liczbą wagonów, których nie można w żaden sposób zmienić. Wszystko, co możesz zrobić, to zmienić dane w nich zawarte. Ten model wyjaśnia również wiele problemów, jakie macie tablice:
Jeśli chodzi o stos: „stos” to mniej struktura danych niż pomysł. Idea stosu polega na tym, że działa on podobnie jak stos książek. Możesz umieścić książki tylko na wierzchu stosu i zawsze możesz zdjąć wierzchnią książkę ze stosu (przynajmniej jeśli książki są wystarczająco ciężkie).
Biorąc to pod uwagę, połączoną listę można wykorzystać jako stos, jeśli myślisz o danych w wagonach jak o książkach, a książkę w pierwszej najbardziej przewożonej o górze stosu.
Mam nadzieję, że to ci pomogło. Może nie. Może jesteś bardziej wizualny. W takim przypadku proponuję znaleźć kogoś, kto jest dobry w udzielaniu wyjaśnień wizualnych i wytłumaczy ci to. To nie potrwa długo, ale absolutnie będzie tego warte.
Można teraz z tym walczyć. Ale samo zaakceptowanie tego nie jest opcją na dłuższą metę.
źródło
Nie powiedziałbym, że „powinieneś się tym martwić”, ale sam fakt, że zdajesz sobie sprawę ze swoich słabych punktów, pokazuje, że wiesz dokładnie, gdzie lepiej się uczyć. Myślę, że ta postawa będzie ci dobrze służyć i na dłuższą metę będzie dobrze.
źródło
Cytując mojego ulubionego nauczyciela CSCI:
Struktury danych brzmią ciężko, prawda? Dla mnie to brzmi abstrakcyjnie i trochę skomplikowane, a przede wszystkim ... ważne!
Struktury danych to niezbędny kurs. I często się zmaga, ale idź dalej! Tak długo, jak zjesz swoje Pszenice i utrzymasz je, dotrzesz do tęczy z
bag
wypełnionymgeneric items
pod spodem.źródło
Bardzo dobre punkty w innych odpowiedziach, tylko jedna uwaga do dodania: Listy połączone IMO mogą być trudniejsze niż np. Stosy dla wielu osób, ponieważ opierają się na pośredniości (wyrażone za pomocą referencji / wskaźników ). I te koncepcje bazowe mogą być trudne do uchwycenia .
źródło
Struktury danych były pierwszą „twardą” klasą, jaką wziąłem; użyliśmy Fortran 77 zamiast Java, ale koncepcje są w dużej mierze takie same.
Zajęło mi tydzień dłużej niż moi koledzy z klasy, aby przejrzeć koncepcję połączonej listy; Przerwałem zadanie, ale po kilku nieco frustrujących sesjach z moim profesorem w końcu kliknęło (dosłownie; usłyszałem „kliknięcie” w mojej głowie, kiedy w końcu zrozumiałem).
Każdy ma problemy gdzieś w swoim programie CS (chyba że są dziwakami). Jeśli rozumiesz, gdzie są twoje słabości i jak je rozwiązać, naprawdę nie masz się czym martwić.
źródło
Czy miałeś problem ze zrozumieniem połączonej listy lub po prostu z implementacją?
Nie jest niczym niezwykłym, że nowy programista ma tam trudności, ponieważ może to być pierwszy raz, gdy musisz pomyśleć o tym, co to naprawdę znaczy, gdy piszesz:
W tym samym ćwiczeniu wszystko mnie rozwaliło w ALGOL / W, ponieważ nie do końca rozumiałem semantykę języka. Rok później ledwo pamiętam, dlaczego miałem trudności.
źródło
Pewne obszary rozwoju oprogramowania będą trudniejsze niż inne. Niezależnie od tego, czy są to określone algorytmy, pewne wzorce projektowe lub określone procedury będą się różnić w zależności od osoby. Uważam, że muszę użyć czegoś w prawdziwym programie, zanim w pełni to zrozumiem.
Bardziej martwiłbym się, gdyby ktoś twierdził, że wie wszystko i nigdy nie miał problemów z nauką czegoś.
Osobiście nigdy nie wydawało mi się, że mam problemy z połączonymi listami, ale potem przez 8 lat pracowałem nad programem, który wykorzystywał je wszędzie, więc codziennie z nimi pracowałem. Tak długo, jak wiesz, gdzie znaleźć informacje potrzebne do odświeżenia pamięci i znasz obszary, w których masz „kłopoty”, powinieneś być w porządku.
źródło
Miałem problem z rachunkiem różniczkowym i musiałem wziąć to drugi raz. Za drugim razem odkryłem, że jestem mądry, ale pierwszy nauczyciel matematyki był w zasadzie bezużyteczny :)
Znajdziesz w IT wielu ludzi, którzy nie potrafią dobrze się komunikować, nawet nauczycieli. Z drugiej strony, niektórzy ludzie z branży IT są naprawdę świetnymi pisarzami i mistrzami komunikacji.
Czasami czytanie poza domem może naprawdę pomóc. Książki komputerowe różnią się znacznie jakością. Wejdź na Amazon i przekonaj się, jaką książkę lubią ludzie.
Powodzenia.
źródło