模拟指针是用数组元素来模拟链表的一种数据结构。其中,数组的每一个元素都分成了数据域data和指针域link。data的数据类型根据需要而定(即链表要存储的数据的类型),而link为整型,用于指出在链表中的下一个元素的数组下标。一下是模拟指针类的声明:
template
class SimNode {
friend SimSpace
; //空闲指针存储池
private:
T data;
int link;
};
除此之外,还需要一个存储池来存放未被使用的元素(即以上代码中的SimSpace)。类声明如下:
template
class SimSpace {
public:
SimSpace (int MaxSpaceSize=100);
~SimSpace () {delete [] node};
int Allocate ();
void Deallocate (int& i);
private:
int NumberOfNodes, first;
SimNode
*node;
};
template
SimSpace
::SimSpace (int MaxSpaceSize) {