У меня есть этот код Хаффмана, который предназначен для возврата кода Хаффмана для каждой буквы в массиве и печати их в алфавитном порядке.Проблема в том, что он не генерирует никаких выходных данных и вместо этого продолжает обработку, пока я не выйду из него вручную.Может кто-нибудь, пожалуйста, помогите мне определить ошибку?Я думаю, что мой код правильный, но я не знаю, откуда исходит бесконечный цикл.
void buildHuffmanTree(char arr[], int freq[]){
int top = 0;
for (int i=0;i<strlen(arr);i++){
push(PQ,newNode(arr[i],freq[i]));
}
for (int i=0; i<qTop;i++){
struct node* node2 = newNode('!',0);
node2->left = pop(PQ);
node2->right = pop(PQ);
struct node* nodeL=node2->left;
struct node* nodeR=node2->right;
node2->frequency = nodeL->frequency + nodeR->frequency;
push(PQ,node2);
}
struct node* root= pop(PQ);
printCodes(root,arr2,top);
}
int main(){
char arr[] = { 'a', 'b', 'c', 'd', 'e', 'f' };
int freq[] = { 5, 9, 12, 13, 16, 45 };
buildHuffmanTree(arr,freq);
return 0;
}
Вывод, который я ожидаю, таков.Но вместо этого он просто продолжает работать, не выводя ничего.Я уверен, что он правильно передает значения в PQ, поэтому я не знаю, где моя ошибка.
a: 1100
b: 1101
c: 100
d: 101
e: 111
f: 0
Буду признателен за любые советы по этому поводу.Спасибо.