Wytłumaczenie procedury z USS

0

Witam
Proszę o wytłumaczenie krok po kroku tej procedury z "Uniwersalnej Struktury Słownikowej" :

procedure dodaj(root:wsk;s,s1:string);         //dodaje nowy element drzewa trie
 var c:char;i:integer;p:wsk;pyt:char;
begin
     for i:=1 to length(s) do
     begin
         if (root^.next[s[i]]<>NIL) then root:=root^.next[s[i]]
         else
         begin
            p:=nowa();
            root^.next[s[i]]:=p;
            root:=p;
         end;
     end;
     if root^.koniec=true then
     begin

     end
     else
     begin
          root^.koniec:=true;
          root^.slowo:=s;
          root^.tlumaczenie:=s1;

     end;
end;

dodanie znacznika <code class="pascal"> - furious programming

1

Zasada działania drzewa Trie jest bardzo prosta; Może kod tego nie obrazuje, ale schemat struktury takiego drzewa już powinien:

trie-example.png
źródło: http://pl.wikipedia.org/wiki/Drzewo_trie

Z Twojego kodu wynika, że każdy węzeł drzewa posiada tablicę węzłów, odpowiadających poszczególnym literom, z których budowane są słowa; Wyszukiwanie słowa zaczyna się od węzła głównego; Zagłębianie się w drzewo wykonywane jest tyle razy, ile liter ma szukane słowo;

Najpierw sprawdzane jest, czy główny węzeł posiada w tablicy pierwszą literkę wyszukiwanego słowa; Jeśli tak - przechodzi się do węzła ze znalezioną literką; Następnie sprawdza się, czy aktualny węzeł posiada drugą literkę w tablicy i jeśli tak - przechodzi się do węzła odpowiadającego tej literce; Takie przechodzenie wykonuje się dla każdej literki; Jeśli słowo znajduje się w drzewie - wszystkie litery szukanego słowa zostaną znalezione; Jeśli nie istnieje - któraś literka nie zostanie znaleziona; Aby w takim przypadku dodać słowo do drzewa, trzeba do niego dodać węzły poczynając od pierwszej nieznalezionej literki;

Obrazek jaki dołączyłem do posta powinien to obrazować; Nie wiem czy podany przez Ciebie kod działa poprawnie, bo nie ma go jak przetestować, bez imeplementacji całego drzewa;


Edit: Nie zauważyłem, że już pytałeś o to drzewo w innym wątku: http://4programmers.net/Forum/Newbie/235688-wytlumaczenie_kodu_slownik_angielsko-polski?view=unread

1 użytkowników online, w tym zalogowanych: 0, gości: 1