我的问题是如何在以下情况下实现位图?
如果图的某个顶点在最小生成树(MST)中,则标记对应的位;稍后通过检查该位检查它是否在 MST 中。
一开始,我正在考虑使用
typedef struct bit_t{
char bit0:1;
} bit;
bit bitmap[num_of_vertex];
并使用位图数组记录位;
但后来我发现 sizeof (bitmap[num_of_vertex]) 是 num_of_vertex 字节,而不是 num_of_vertex/8 字节。所以它不像我想的那样节省空间;
到目前为止,我使用
long bit_record = 0;
...
bit_record |= 1<< u;//set vertex as in MST
...
然后稍后使用以下命令检查顶点是否在 MST 中:
static bool is_in_MST(int v, int bit_record){
int mask = 1 << v;
if (mask & bit_record)
return true;
else
return false;
}
虽然代码有效,但如果 num_of_vertex 大于 32,它将不起作用。
通常如何实现上述情况下的位图?