// node2.cpp #include #include "node2.h" int Node::initflag = 0; Node *Node::avail; Node Node::Nodepool[MAXNODES]; 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; }