Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.10.2010, 07:17   #1
0479
Форумчанин
 
Аватар для 0479
 
Регистрация: 27.09.2009
Сообщений: 153
Стрелка Дерево для алгоритма Хаффмана

Доброго времени суток. Помогите пожалуйста с комментариями к приведённому ниже коду построения дерева для алгоритма Хаффмана.
Каким образом в нём идёт построение дерева.Язык Delphi.Интерфейс GUI.

Код:
procedure TForm1.CreateTree(FS:DWord); 
var
  n:DWord;
  m1, m2: Byte;
  n1:Cardinal;
  i:Integer;//Ñ÷¸ò÷èê
begin
  n:=0;
  while n<FS do
    begin
      m1:=48;
      n1:=high(Cardinal);
      for i:=0 to 255 do
        if (El[i].Count<>0) and (El[i].Count < n1) then
           begin
             n1 := El[i].Count;
             m1:=i;
           end;
      n1:=high(Cardinal);
      m2:=m1;
      for i:=0 to 256 do
        begin
        if (m2=m1)and(i=256) then
          begin
          if m1>0 then
            m2:=m1-1
          else
            m2:=m1+1;
          break;
          end;
        if (i<256)and(El[i].Count <> 0) and (El[i].Count <= n1) and (i<>m1) then
          begin
            n1 := El[i].Count;
            m2:=i;
          end;
        end;
      El[m1].Count:=El[m1].Count + El[m2].Count;
      n:=El[m1].Count;
      El[m1].Code:=El[m1].Code shl 1;
      El[m2].Count:=0;
      El[m1].Length:=El[m1].Length+1;
      while El[m1].Link>=0 do
        begin
        El[El[m1].Link].Length:=El[El[m1].Link].Length+1;
        El[El[m1].Link].Code:=El[El[m1].Link].Code shl 1;
        m1:=El[m1].Link;
        end;
      El[m1].Link:=m2;
      El[m2].Code:=(El[m2].Code shl 1)+1;
      while El[m1].Link>=0 do
        begin
        El[El[m1].Link].Length:=El[El[m1].Link].Length+1;
        m1:=El[m1].Link;
        El[El[m1].Link].Code:=(El[El[m1].Link].Code shl 1)+1;
        end;
    end;
end;
0479 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Хеширование для алгоритма TEA на Си. NooDle Общие вопросы C/C++ 4 15.10.2010 20:50
блок схема для алгоритма RC6 Anenya.K Софт 5 09.03.2010 18:38
Хеширование для алгоритма TEA на C. NooDle Помощь студентам 0 13.04.2009 12:01
Создания алгоритма для программы на паскале Brunik Помощь студентам 0 09.04.2009 12:17