Kodowanie znaków w drzewie Huffmana

Kodowanie znaków w drzewie Huffmana
F7
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 26
0

Witam
Prosiłbym o wytłumaczenie tych dwóch procedur a konkretnie jak odbywa się przeszukiwanie drzewa huffmana :

Kopiuj
 function codechar(c:char; n:node; b:string; var j:integer):boolean;  
begin
  if n^.left = nil then begin                
    if c <> n^.c then codechar := false     
    else begin                               
      write(b);                              
      j:=j+length(b);                        
      codechar := true;                      
    end;
  end
  else codechar := codechar(c,n^.left,b+'0',j) or codechar(c,n^.right,b+'1',j); 
end;

function huffmancompress(n:node; s:string):integer; 
var
  i,j:integer;
begin
  j:=0;                          
  for i:=1 to length(s) do begin  
      codechar(s[i],n,'',j);      
  end;
  huffmancompress:=j;             
end;
vpiotr
  • Rejestracja: dni
  • Ostatnio: dni
0

Zacznij od opisania parametrów.

flowCRANE
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tuchów
  • Postów: 12269
0

Po pierwsze to nazewnictwo jest tragiczne - jednoliterowe identyfikatory są nieczytelne i nie wiadomo czym są i do czego służą, jeśli się tego nie sprawdzi (i straci czas); Po drugie konwencja nazewnictwa sugeruje, aby wszelkie typy wskaźników poprzedzać literą P, więc Twój typ node powinien nazywać się PNode (tak - z shiftu należy korzystać); Po trzecie PascalCase należy stosować, aby zwiększyć czytelność kodu; Po czwarte wszelkie **Begin**y powinny być w nowych liniach, bo przy długich warunkach i niekonsekwentnym stosowaniu indentacji można je pominąć i nawalić bugów; Jedyne co wygląda dobrze to właśnie indentacja;

Tak więc zapoznaj się z praktykami tworzenia czytelnego kodu, a po drugie podaj deklarację zmiennych i typów danych, które używasz w parametrach, abyśmy mieli jakieś podstawy do udzielenia pierwszej pomocy.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.