0

我想从底部到顶部遍历二叉树。

然后我想将这个遍历(=方式)的位序列保存在一个字符中。

这种行为应该是动态的,所以如果我有一个超过 8 位的位序列,则应该动态扩展 char,例如 2 个字节等等....

例如,如果位序列是 1001010,我希望将完全相同的位序列存储在 char 中。

我知道我应该使用位移运算符 << >> 但我无法弄清楚正确的方法。

在我在 char 中写了 8 位之后,我遇到了一个问题。

我附上了一些示例代码,希望有人可以阐明。

谢谢

char* bits = malloc(sizeof(char));
char* temp_bits = NULL;

some loop
{
  if (cnt_bit > 7)
  {
    temp_bits = realloc(bits, sizeof(char)*2);
    free(bits);
    bits = temp_bits;
  }
  *bits = *bits << 1;
  *bits = *bits | 0;
  cnt_bit++;
}
4

1 回答 1

1

你不能从一个内存值转移到下一个!如果您想这样做,您可以尝试使用通常为 64 位的“long long int”类型,但我认为您不能比移位更进一步,除非您实现自己的移位操作,该操作适用于通用大批。

我认为每级使用一个字节会更快。

于 2012-12-05T23:17:45.890 回答