Force Napisano Lipiec 23, 2007 Zgłoś Share Napisano Lipiec 23, 2007 Po naprawieniu błędów i dodaniu nowych rzeczy pokazuję nową wersje struktur danych napisanych w Delphi (tak naprawdę piąta, ale nie będę z każdą pierdołą robił nowy temat i halo) Struktury danych w większości pracują na Pointer-ach dzięki czemu można do nich obiekty wrzucać i używać tak jak TList. Istnieją następujące struktury: TForceStack - stos, pewnie kopia stosu z Classes, no ale można zobaczyć jak wygląda wewnątrz i ma własny moduł, a nie dzieli z innymi klasami TForceQueue - kolejka a reszta jak wyżej, ale zamiast słowa "stos" czytaj "kolejka". TForcePQueue - kolejka piorytetowa, oparta na kopcu. TForceList - moja lista dwukierunkowa. Charakteryzuje się tym, że posiada pseudo-iterator, dzięki któremu można ją przeglądać. TForceAVL - drzewo AVL, umożliwia w czasie logarytmicznym dodawaniem i usuwanie elementów. Edycja też jest możliwa, ale nie można edytować tego co wpływa na pozycję elementu w drzewie (aby nie zaburzyć go). Umożliwia zwrócenie listy TForceList, która będzie zawierać wszystkie elementy w porządku inorder. TForceHashTable - tablica haszująca, która nie ma nic wspólnego z tablicą. Jest oparta na drzewie AVL, charakteryzuje się tym, że elementy są indeksowane stringiem i dobiera się do nich przez []. Także może zwrócić listę elementów. TForceIHashTable - tablica haszująca ale specjalnie napisana dla integerów, czyli klucz jest stringiem, a wartośc liczbą. TForceIArray - właściwie kopia array[0..x] of integer, tylko, że ma mały bajerek umożliwiający przekazanie innym klasą tylko wycinka tablicy, a dobieranie się do innych komórek zwraca błąd. TForceDirectedGraph - graf skierowany oparty na listach sąsiedzkich. Umożliwia (jeśli to dobre słowo) sortowanie topologiczne, sprawdzanie czy da sie dostać z węzła a do b, ile najmniej to będzie kosztować, łączenie węzłów w grupy jeśli są na cyklu. Pracuje na grafie bez wag jak i z wagami. Końcowe uwagi: - niektóre klasy działają na Delphi 2006 i nowszych - niektóre będą szły jak się wykomentuje kawałki kodu - chodzi mi o drzewo AVL i tablicą haszującą i funkcją GetList. - W załączniku są gotowe projekty i programy wykorzystująca podane struktury oraz dokumentacja opisująca wszystkie zmienna, funkcje, procedury publiczne jakie są w klasach Plik : http://fp.cba.pl/downloads.php?cat_id=6&download_id=9 Należy wkleić do przeglądarki, klikanie wyrzuci dna stronę cba (na szczęście nie państwowego ) Ponieważ często serwer lubi udawać, że go nie ma to dodaję też załącznik do postu ForceClasses.zip Baza tysięcy lotnisk: http://airportsbase.com Link do komentarza Udostępnij na innych stronach More sharing options...
Toster Napisano Lipiec 23, 2007 Zgłoś Share Napisano Lipiec 23, 2007 najs, jak bede mial chwilke to podlubie pogrzebaczem moze cos popsuje ;P Always Dark<br /> Link do komentarza Udostępnij na innych stronach More sharing options...
Force Napisano Lipiec 23, 2007 Autor Zgłoś Share Napisano Lipiec 23, 2007 Nie licz tylko, że będę Ci powodzenia życzył Baza tysięcy lotnisk: http://airportsbase.com Link do komentarza Udostępnij na innych stronach More sharing options...
Force Napisano Sierpień 31, 2007 Autor Zgłoś Share Napisano Sierpień 31, 2007 Napisałem nowszą, lepszą, jeszcze bardziej zbugowaną ( ) wersje struktur danych do Delphi. Można ją ściągnąć z tego samego linku co w pierwszym poście (link trzeba wkleić do przeglądarki, albo jak ktoś ma firefox-a to środkowy przycisk myszki). Z klasami jest dokumentacja i przykładowe programy. Co się zmieniło: - Poprawiono błąd w grafie skierowanym polegający na za dużej nieskończoności i problemie przy obliczaniu odległości gdy są wagi - W kolejce priorytetowej gdy są dwa takie same elementy - funkcja Compare zwraca 0 - to porównuje czasy dodania i wybiera ten wcześniejszy. - TForceIArray i TForceIArrayS dostały funkcję sortowania części tablicy (lub całej) oraz funkcją obliczającą maksymalną podatblicę. - Dodano klasę TForceGraph, która jest grafem nieskierowanym. Oparta jest na liście sąsiedzkiej - Dodano klasę TForceTableGraph, który jest grafem opartym na tablicy, może być skierowany/nieskierowany, z wagami lub bez wag - Dodano klasę TForceIStack, która jest stosem liczb - Dodano klasę TForceIQueue, która jest kolejką liczb - Nie będzie wspierania starszych Delphi niż Turbo Delphi (jakby kiedyś było), czyli nie będzie napisane, że chodzi tylko w Turbo Delphi i wzwyż, trzeba to założyć. - Jak coś jest modyfikowane lub dodawana to będzie okomentowane, aby nie tylko dało się używać klasy ale i je zrozumieć. Więcej zmian nie pamiętam, za wszystkie serdecznie żałuje. Na wszelki wypadek dołączyłem do posta też plik. ForceClasses.zip Baza tysięcy lotnisk: http://airportsbase.com Link do komentarza Udostępnij na innych stronach More sharing options...
Polecane posty
Zarchiwizowany
Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.