/********************************************************************** * Class Node serves as a definition of the states or nodes that are * generated during search. Application-level classes that are derived * from class Node must implement the following methods: * * operator== Determines if 2 objects represent the same state * * display() "Displays" the object (to cout) * * Expand() Expands the node by generating all of its * successors. The successors are stored in a list object * (NList). **********************************************************************/ class Node { public: Node(); void SetParent(Node* par) {parent = par;} Node* GetParent(void) const {return parent;} void SetDepth(unsigned d) {depth = d;} unsigned GetDepth(void) const {return depth;} virtual int operator<(const Node& other) const {return depth