Передача уникального кода функции перемещения в массив кода Хаффмана - PullRequest
0 голосов
/ 05 марта 2019

Я создал программу, которая создает дерево Хаффмана, заполненное узлами символов ascii, которые читаются из текстового файла, а также количество времени, которое они появляются в текстовом файле (частота).Кроме того, он создает уникальные коды для каждого прочитанного символа на основе частоты.

Моя проблема: я не уверен, как получить массив 'code' в моей функции Хаффмана, чтобы он обновлялся при вызове кода, сгенерированного моей функцией traverse.в настоящее время каждый элемент в массиве 'code' заполнен пустой строкой.

Вся помощь приветствуется, мой код в отношении двух функций:

функция перемещения

void traverse(string code = "") const {

        if (child0) {
            child0->traverse(code + '0');
            child1->traverse(code + '1');
        }
        else {
            cout << " " << value << "     ";
            cout << weight;
            cout << "    " << code << endl;
        }
}

функция Хаффмана

void huffman(string code[256], const unsigned long long freq[256]) {
    priority_queue < node > q;
    for (unsigned i = 0; i < 256; i++) {
        if (freq[i] == 0) {
            code[i] = "";
        }
    }

    for (int i = 0; i < 256; i++)
        if (freq[i])
            q.push(node(i, freq[i]));

    while (q.size() > 1) {
        node *child0 = new node(q.top());
        q.pop();
        node *child1 = new node(q.top());
        q.pop();
        q.push(node(child0, child1));
    }

    cout << "CHAR  FREQUENCY  HUFFMAN CODE" << endl;
    q.top().traverse();
}
...