#c
#c
Вопрос:
Я пытаюсь написать простую рекурсивную функцию для возврата закодированных значений. Функция примет входную строку 001a1b01c1 и вернет дерево и закодированные значения. Буквы кодируются как: a = 00, b = 01, c = 10, d = 11. Я использую studio и пытаюсь сохранить его на C. Я не уверен, что я реализую рекурсивный.
#include "pch.h"
#include <stdio.h>
#include <stdlib.h>
struct HuffmanNode {
unsigned char value;
struct leaf *left;
struct leaf *right;
};
HuffmanNode *decodeTree(unsigned char tree[], int amp;idx)
{
if (tree[idx] == '1')
{
idx;
return (HuffmanNode(tree[idx]));
}
else
{
idx ;
HuffmanNode *left = decodeTree(tree, idx);
idx ;
HuffmanNode *right = decodeTree(tree, idx);
return HuffmanNode(left, right);
}
}
int main()
{
// huffman tree 001a1b011c
unsigned char HuffmanArray[24] = {'0','0', '1', 'a', '1', 'b', '0', '1',
'1', 'c' };
int idx = 0;
HuffmanNode *codetree = NULL;
codetree = decodeTree(HuffmanArray, idx);
return(0);
}
Комментарии:
1. Это C или C ? Вы включаете iostream.h.
2. Я пишу на C. — Mark
3. Если это C, дважды проверьте это
#include
. Это очень похоже на C с использованиемHuffmanNode(...)
конструктора.4. Я исправил то, что считаю правильным. Мне трудно разобраться в процессе рекурсии.