SOURCE FILE: deque.h
// ********************************************************
// Header file deque.h for the ADT deque.
// Pointer-based implementation.
// ********************************************************
typedef double dequeItemType ;
// The deque is implemented as a circular doubly linked list
// with one external pointer to the back of the deque.
struct dequeNode;
typedef dequeNode* ptrType;
class dequeClass
{
public:
// constructors and destructor:
dequeClass(); // default constructor
~dequeClass(); // destructor
// deque operations:
int Length() const;
// Determines the length of a deque.
// Precondition: None.
// Postcondition: Returns the number of items
// that are currently in the deque.
bool IsEmpty() const;
// Determines whether a deque is empty.
// Precondition: None.
// Postcondition: Returns true if the deque is empty;
// otherwise returns false.
void AddInFront(dequeItemType NewItem, bool& Success);
// Adds an item to the front of a deque.
// Precondition: NewItem is the item to be added.
// Postcondition: If insertion was successful, NewItem
// is at the front of the deque and Success is true;
// otherwise Success is false.
void AddInRear(dequeItemType NewItem, bool& Success);
// Adds an item to the rear of a deque.
// Precondition: NewItem is the item to be added.
// Postcondition: If insertion was successful, NewItem
// is at the rear of the deque and Success is true;
// otherwise Success is false.
void TakeOutFront(dequeItemType& DequeFront, bool& Success);
// Retrieves and removes the front of a deque.
// Precondition: None.
// Postcondition: If the deque was not empty, DequeFront
// contains the item that was at the front of the Deque,
// the item is removed, and Success is true. However, if the
// deque was empty, deletion is impossible, DequeFront is
// unchanged, and Success is false.
void TakeOutRear(dequeItemType& DequeRear, bool& Success);
// Retrieves and removes the rear of a deque.
// Precondition: None.
// Postcondition: If the deque was not empty, DequeRear
// contains the item that was at the rear of the Deque,
// the item is removed, and Success is true. However, if the
// deque was empty, deletion is impossible, DequeRear is
// unchanged, and Success is false.
void Print() const;
// Prints the contents of the Deque in front-to-back order.
// (Prints to standard output.)
// Does nothing if the Deque is empty.
// Precondition: None
// Postcondition: Deque is unchanged.
private:
ptrType BackPtr;
int Size ;
}; // end class
// End of header file.