Таким образом, мы получили задание написать ALG сжатия для .txt текстовых/цифр (предположительно через код хаффмана, так как наш профессор был очень расплывчатым)Хаффмана Кодирование структур Алгоритм/данных
У меня есть все линии, как ключи на карте с частотами в качестве их значений. Я немного отрывочен от того, как исходить отсюда, поскольку карты организованы по порядку по ключу не значение Должен ли я использовать другую структуру данных (а не карту) или было бы достаточно просто найти два наименьших значения min каждый раз, когда я хотел добавить к дереву? Код ниже, любая помощь была бы потрясающей!
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <algorithm>
#include <vector>
#include <map>
using namespace std;
int main()
{
vector <string> words;
map <string, int> store;
ifstream infile("file.txt");
string text;
while (getline(infile, text))
{
istringstream iss(text);
string input;
if (!(iss >> input))
break;
words.push_back(input);
}
int freq = 0;
while (!words.empty())
{
string check = words[0];
if(check == "") //make sure not reading a blank
{
words.erase(remove(words.begin(), words.end(), "")); //remove all blanks
continue; //top of loop
}
check = words[0];
freq = count(words.begin(), words.end(), check);//calculate frequency
store.insert(pair<string, int>(check, freq)); //store words and frequency in map
words.erase(remove(words.begin(), words.end(), check)); //erase that value entirely from the vector
}
map<string, int>::iterator i;
for(i = store.begin(); i != store.end(); ++i)
{
cout << "store[" << i ->first << "] = " << i->second << '\n';
}
return 0;
}
Вам необходимо поместить свои данные в узлы после подсчета. После этого все должно быть ясно. Невозможно построить дерево без использования узлов. Чтобы помещать ваши данные в узлы, сначала вы должны использовать класс для хранения единственной записи карты или данных, которые она представляет. – HopefullyHelpful
@greenteam, вы могли бы легко найти это на выродках для вундеркиндов, здесь: http://www.geeksforgeeks.org/greedy-algorithms-set-3-huffman-coding/ – NeoR
или здесь http: //www.geeksforgeeks. org/tag/huffman-coding/ – NeoR