C   23

huff c

Guest on 24th January 2023 01:59:45 PM


  1. #include <stdio.h>
  2.  
  3. void
  4. print_bits(char p, int l)
  5. {
  6.         int i;
  7.        
  8.         for (i = 0; i < l; i++)
  9.                 if (p & (1 << i))
  10.                         putchar('1');
  11.                 else
  12.                         putchar('0');
  13. }
  14.  
  15. char *
  16. make_tree(char *s, int *len, int l, int b, int pos)
  17. {
  18.         char c;
  19.  
  20.         if (*len == 0)
  21.                 return (s);
  22.  
  23.         c = *s;
  24.         s++;
  25.         (*len)--;
  26.         if (c == '\1') {
  27.                 s = make_tree(s, len, l + 1, 0, pos);
  28.                 return (make_tree(s, len, l + 1, 1, pos | (1 << (l - 1))));
  29.         } else {
  30.                 print_bits(pos | (b << l), l - 1);
  31.                 putchar(' ');
  32.                 printf(" %d\n", *s);
  33.                 s++;
  34.                 (*len)--;
  35.  
  36.                 return (s);
  37.         }
  38. }
  39.  
  40. int
  41. main(void)
  42. {
  43.         char str[] = { 1, 1, 1, 1, 0, 3, 1, 0, 4, 0, 5, 0, 6, 1, 0, 7, 0, 8 };
  44.         int len;
  45.  
  46.         len = sizeof(str);
  47.         make_tree(str, &len, 0, 0, 0);
  48.  
  49.         return (0);
  50. }

Raw Paste


Login or Register to edit or fork this paste. It's free.

">