Question: 1-taking a text file you have to perform Huffman coding on that file and generate the code...after we have to decode that code and then

1-taking a text file you have to perform Huffman coding on that file and generate the code...after we have to decode that code and then display the text which is encoded and decoded using bitwise operators.

2- please complete the below Huffman coding with decoded and encode part with its main functions means the output should be both encoded and decoded text.

#include #include #include #include

using namespace std;

// Tree node for Huffman coding struct HuffmanNode { char data; int freq; HuffmanNode *left, *right;

HuffmanNode(char data, int freq) { this->data = data; this->freq = freq; left = right = NULL; } }; struct Compare { bool operator()(HuffmanNode* a, HuffmanNode* b) { return a->freq > b->freq; } }; void generateCodes(HuffmanNode* root, string code, unordered_map& codes) { if (root == NULL) return; if (root->data != '\0') { codes[root->data] = code; } generateCodes(root->left, code + '0', codes); generateCodes(root->right, code + '1', codes); } unordered_map buildHuffmanTree(string text) { unordered_map freqMap; for (char c : text) { freqMap[c]++; }

priority_queue, Compare> pq; for (auto& p : freqMap) { pq.push(new HuffmanNode(p.first, p.second)); }

while (pq.size() > 1) { HuffmanNode* left = pq.top(); pq.pop(); HuffmanNode* right = pq.top(); pq.pop(); HuffmanNode* parent = new HuffmanNode('\0', left->freq + right->freq); parent->left = left; parent->right = right; pq.push(parent); }

unordered_map codes; generateCodes(pq.top(), "", codes); return codes; }

// Encodes the text using the generated Huffman codes string huffmanEncode(string text, unordered_map& codes) { string encodedText = ""; for (char c : text) { encodedText += codes[c]; } return encodedText; }

// Decodes the Huffman-encoded text using the generated Huffman codes string huffmanDecode(string encodedText, unordered_map& codes) { string decodedText = ""; int i = 0; while (i < encodedText.size()) { HuffmanNode* node = codes.begin()->second[0] == '0' ? codes.begin()->second[1] == '0' ? codes.begin()->second[2] == '0' ? codes.begin()->second[3] == '0' ? codes.begin()->second[4] == '0' ? codes.begin()->second[5] == '0' ? codes.begin()->second[6] == '0' ? codes.begin()->second[7] == '0' ? codes.begin()->second[8] == '0' ? codes.begin()->second[9] == '0' ? codes.begin()->second[10] == '0' ? codes.begin()->second[11] == '0' ? codes.begin()->second[12] == '0' ? codes.begin()->second[13] == '0' ? codes.begin()->second[14] == '0' ? codes.begin()->second[15] == '0' ? node->left : node->right : codes.begin()->second[15] == '0' ? node->left : node->right : codes.begin()->second[14] == '0' ? node->left : node->right : codes.begin()->second[13] == '0' ? node->left : node->right : codes.begin()->second[12] == '0' ? node->left : node->right : codes.begin()->second[11] == '0' ? node->left : node->right : codes.begin()->second[10] == '0' ? node->left : node->right : codes.begin()->second[9] == '0' ? node->left : node->right : codes.begin()->second[8] == '0' ? node->left : node->right : codes.begin()->second[7] == '0' ? node->left : node->right : codes.begin()->second[6] == '0' ? node->left : node->right : codes.begin()->second[5] == '0' ? node->left : node->right : codes.begin()->second[4] == '0' ? node->left : node->right : codes.begin()->second[3] == '0' ? node->left : node->right : codes.begin()->second[2] == '0' ? node->left : node->right : node->right;

if (node->data != '\0') { decodedText += node->data; i++; } } return decodedText; }

int main() { string text = "hello world"; unordered_map codes = buildHuffmanTree(text); string encodedText = huffmanEncode(text, codes); cout << "Encoded text: " << encodedText << endl;

string decodedText = huffmanDecode(encodedText, codes); cout << "Decoded text: " << decodedText << endl; return 0; }

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!