// node3.cpp #include #include "node3.h" int Node::initflag = 0; Node *Node::avail; Node Node::Nodepool[MAXNODES]; void *Node::operator new(size_t size) { return mynew(); } void Node::operator delete(void *p) { mydelete( (Node *)p); } Node *Node::mynew() { Node *p; if (!initflag) initnodes(); assert(avail); p = avail; avail = avail->getnext(); p->setnext(NULL); return(p); } void Node::mydelete(Node *p) { p->setnext(avail); avail = p; } void Node::initnodes() { int i; initflag = 1; for (i = 0; i < MAXNODES-1; i++) Nodepool[i].setnext(&Nodepool[i+1]); Nodepool[MAXNODES-1].setnext(NULL); avail=&Nodepool[0]; } Type Node::getinfo() { return info; } Node *Node::getnext() { return next; } void Node::setinfo(Type x) { info = x; } void Node::setnext(Node *n) { next = n; }