Изменения

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

Обсуждение участника:KirillKutirev

8 байт убрано, 22:26, 7 января 2014
Реализация
Поскольку мы не ограничены по памяти, очень удобно использовать вместо двух одномерных массивов один двумерный. Это избавит код от громоздких "if".
n // количество элементов
sum = int[logMAXN][MAXN+1] // массив, в котором считаем суммы, сначала заполнен "бесконечностями"
s1 = 0, s2 = 1 // указатели на строки, которые выполняют функции первого и второго массивов в описании алгоритма
h1 = 0, h2 = 0 // указатели на первый элемент первой строки и второй строки соответственно
t1 = n, t2 = 0 // указатели на ячейки массивов сразу после последнего элемента в этих массивах
check = 0 // считает на сколько стало меньше элементов
temp // переменная, на которую ссылаются самые нижние листья дерева
class vert{ // класс - лист дерева, которое, по сути, строится в коде хаффмана
public:
};
sum = vert[logMAXN][MAXN+1] // элементы w каждой ячейки равны "бесконечности"
temp = vert // переменная, на которую ссылаются самые нижние листья дерева
temp.check = -1
make(int str1, int str2, int pos1, int pos2)// функция, которая суммирует, задает указатели и значения переменных val и left
sum[s2][t2].w = sum[str1][pos1].w + sum[str2][pos2].w
40
правок

Навигация