я не могу расшифровать Хаффмана с помощью дерева? - PullRequest
0 голосов
/ 22 января 2019

есть ли проблемы с этим кодом. Я не могу расшифровать Хаффмана с этим. ошибка: ошибка сегментации (ядро сброшено)

char * real_bin = "100101111101001100"

struct tree
{
  int fre;
  char c;
  struct tree *left;
  struct tree *right;
};
 typedef struct tree tree;


void decode_huffman(tree *root, char *real_bin)
{

  tree *p = root;

  int m = strlen(real_bin);

  for (int i = 0; i < m; i++)
  {
    if (real_bin[i] == '0')
      {
        p = p->left;
      }

    else
      {
        p = p->right;
      }

    if (p->c != '\0')
      {
        printf("%c\n", p->c);
        p = root;
      }
    }
  }   

1 Ответ

0 голосов
/ 23 января 2019

Что ж, если вы так уверены в кодировании и в своем дереве, то вам следует скорректировать код таким образом

void decode_huffman(tree *root, char *real_bin)
{

  tree *p = root;

  int m = strlen(real_bin);

  for (int i = 0; i < m; i++)
  {
    if (real_bin[i] == '0')
      {
        p = p->left;
      }

    else 
      {
        p = p->right;
      }

      if (p->left==NULL and p->right==NULL) 
    { 
        printf("%c\n",p->data); 
        p=root;

    } 
    }
  }   
...