目录
1. 头文件
#include <cstdlib>
#include <cstdio>
#include <memory.h>
#define Rank int
class Bitmap { //位图Bitmap类:以空间作为补偿,节省初始化时间(既允许插入,亦支持删除)
private:
Rank* F; Rank N; //规模为N的向量F,记录[k]被标记的次序(即其在栈T[]中的秩)
Rank* T; Rank top; //容量为N的栈T,记录被标记各位秩的栈,以及栈顶指针
public:
Bitmap(Rank n = 8) //按指定(或默认)规模创建比特图(为测试暂时选用较小的默认值)
{
N = n; F = new Rank[N]; T = new Rank[N]; top = 0;
} //在O(1)时间内隐式地初始化
~Bitmap() { delete[] F; delete[] T; } //析构时释放空间
// 接口
inline void reset() { top = 0; } //复位:从逻辑上切断所有校验环,O(1)
inline void set(Rank k) { //插入:从逻辑上将B[k]置为true,O(1)
if (!test(k)) { //忽略已带标记的位
T[top] = k; F[k] = top++; //创建校验环
}
}
inline void clea