Редактирование: Оптимальное хранение словаря в алгоритме Хаффмана

Перейти к: навигация, поиск

Внимание! Вы не авторизовались на сайте. Ваш IP-адрес будет публично видимым, если вы будете вносить любые правки. Если вы войдёте или создадите учётную запись, правки вместо этого будут связаны с вашим именем пользователя, а также у вас появятся другие преимущества.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия Ваш текст
Строка 95: Строка 95:
  
 
=== Реализация ===
 
=== Реализация ===
  <span style="color:Green">// s — наша строка обхода, tree[] — дерево вершин, code — текущий код, alphabet[] — массив кодов символов, </span>
+
<span style="color:Green">// s — наша строка обхода, tree[] — дерево вершин, code — текущий код, alphabet[] — массив кодов символов, </span>
  <span style="color:Green">// c'[] — номера символов в порядке обхода</span>
+
<span style="color:Green">// c'[] — номера символов в порядке обхода</span>
 
  '''function''' huffman():
 
  '''function''' huffman():
  <span style="color:Green">//текущая вершина — корень дерева</span>
+
<span style="color:Green">//текущая вершина — корень дерева</span>
  curV = root
+
curV = root
  '''for''' i = 0..n - 2
+
'''for''' i = 0..n - 2
    '''if''' s[i] == 'D'
+
'''if''' s[i] == 'D'
      curV = tree[curV].leftChild
+
curV = tree[curV].leftChild
      code += '0'
+
code += '0'
      '''if''' curV не имеет детей
+
'''if''' curV не имеет детей
        alphabet[следующий номер c'].push(code)
+
alphabet[следующий номер c'].push(code)
    '''else'''
+
'''else'''
      '''while''' curV является правым ребенком и curV не корень
+
'''while''' curV является правым ребенком и curV не корень
        curV = tree[curV].parent
+
curV = tree[curV].parent
        удалить из code последний символ
+
удалить из code последний символ
        curV = tree[curV].rightChild
+
curV = tree[curV].rightChild
        code += '1'
+
code += '1'
        '''if''' curV не имеет детей
+
'''if''' curV не имеет детей
          alphabet[следующий номер c'].push(code)
+
alphabet[следующий номер c'].push(code)
  
 
== См. также ==
 
== См. также ==

Пожалуйста, учтите, что любой ваш вклад в проект «Викиконспекты» может быть отредактирован или удалён другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см. Викиконспекты:Авторские права). НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!

Чтобы изменить эту страницу, пожалуйста, ответьте на приведённый ниже вопрос (подробнее):

Отменить | Справка по редактированию (в новом окне)

Шаблон, используемый на этой странице: