struct Node { // a node in the deque
Object element; // element
Node* prev; // previous node
Node* next; // next node
Node(const Object& e = Object(), Node* p = NULL, Node* n = NULL)
: element(e), prev(p), next(n) { } // constructor
};
typedef Node* NodePtr; // pointer to node