Skocz do zawartości

[Delphi] Nowe, lepsze struktury


Force

Polecane posty

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 :D

 

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 :P )

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

  • 1 month later...

Napisałem nowszą, lepszą, jeszcze bardziej zbugowaną ( :P ) 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

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...