#include <iostream>
#include <cstring>
using namespace std;
struct treenode{
int value;
char element;
treenode *left, *right;
treenode *next;
};
struct Queue{
treenode *front, *rear;
};
void initialQueue(Queue *queue) {
treenode *node = new treenode;
queue->front = queue->rear = node;
node->next = nullptr;
}
treenode *createnode(char element, int value) {
treenode *node = new treenode;
node->right = node->left = nullptr;
node->element = element;
node->value = value;
node->next = nullptr;
return node;
}
void offerqueue(Queue *queue, char element, int value) {
treenode *node = new treenode;
node->element = element;
node->value = value;
node->next = nullptr;
treenode *pre = queue->front;
while(pre->next && pre->next->value <= value) {
pre = pre->next;
}
node->next = pre->next;
pre->next = node;
if (node->next == nullptr) {
queue->rear = node;
}
}
treenode *pollQueue(Queue *queue){
treenode *node = queue->front->next;
queue->front->next = queue->front->next->next;
if(queue->rear == node) queue->rear = queue->front;
return node;
}
char *encode(treenode *root, char element) {
if(root == nullptr) return nullptr;
if(root->element == element) return "";
char *str = encode(root->left, element);
char *s = new char[10];
if(str != nullptr) {
s[0] = '0';
str = strcat(s, str);
} else {
str = encode(root->right, element);
if(str != nullptr) {
s[0] = '1';
str = strcat(s, str);
}
}
return str;
}
void printencode(treenode *root, char element) {
cout << element << ":" << encode(root, element) << " ";
}
void printQueue(Queue *queue){
cout << "<<< ";
treenode *node = queue->front->next;
while (1) {
cout << node->element << " ";
if(node == queue->rear) break;
else node = node->next;
}
cout << "<<<" << endl;
}
int main() {
string Huffman = "The Chinese official said he viewed the Trump Presidency not as an aberration but as the product of a failing political system. This jibes with other accounts. The Chinese leadership believes that the United States, and Western democracies in general, haven’t risen to the challenge of a globalized economy, which necessitates big changes in production patterns, as well as major upgrades in education and public infrastructure. In Trump and Trumpism, the Chinese see an inevitable backlash to this failure.";
char Arr[] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'};
int *arr = new int[26]();
for(int j = 0; j < 26; j++) {
for(int i = 0; i < Huffman.size(); i++) {
if(tolower(Huffman[i]) == Arr[j]) {
arr[j]++;
}
}
}
for(int m = 0; m < 26; ++m) {
cout << Arr[m] << ":" << arr[m] << " ";
}
cout << endl;
Queue queue;
initialQueue(&queue);
for(int i = 0; i < 26; i++) {
offerqueue(&queue, createnode(Arr[i], arr[i])->element, createnode(Arr[i], arr[i])->value);
}
printQueue(&queue);
// 构建哈夫曼树
while(queue.front != queue.rear) {
treenode *left = pollQueue(&queue);
treenode *right = pollQueue(&queue);
treenode *node = createnode(' ', left->value + right->value);
node->left = left;
node->right = right;
offerqueue(&queue, node->element, node->value);
}
treenode *root = pollQueue(&queue);
printencode(root, 'a');
for(int i = 0; i < 26; i++) {
printencode(root, Arr[i]);
}
delete[] arr;
return 0;
}

请教一下各位专家,这段代码哪里有错误,为啥输出不了哈夫曼编码.(本人初学者,写的代码很烂)