40
правок
Изменения
→Реализация
Поскольку мы не ограничены по памяти, очень удобно использовать вместо двух одномерных массивов один двумерный. Это избавит код от громоздких "if".
n // количество элементов
s1 = 0, s2 = 1 // указатели на строки, которые выполняют функции первого и второго массивов в описании алгоритма
h1 = 0, h2 = 0 // указатели на первый элемент первой строки и второй строки соответственно
t1 = n, t2 = 0 // указатели на ячейки массивов сразу после последнего элемента в этих массивах
check = 0 // считает на сколько стало меньше элементов
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