Member Functions for Queue ADT - Pointer Based Implementation
// ********************************************************* // Implementation file Queueptr.cpp for the ADT Queue. // Pointer-based implementation. // ********************************************************* #include "Queueptr.h" // header file #include// for NULL Queue::Queue() : BackPtr(NULL) { } // end default constructor Queue::Queue(Queue& Q) { // Implementation left as an exercise (Exercise 4). } // end copy constructor Queue::~Queue() { int Success; while (!isEmpty()) Success = del(); // Assertion: BackPtr == NULL } // end destructor int Queue::isEmpty() { return (BackPtr == NULL); } // end isEmpty int Queue::insert(queueItemType NewItem) { // create a new node ptrType NewPtr = new queueNode; int Success = (NewPtr != NULL); // check allocation if (Success) { // allocation successful; set data portion of new node NewPtr->Item = NewItem; // insert the new node if (isEmpty()) // insertion into empty Queue NewPtr->Next = NewPtr; else { // insertion into nonempty Queue NewPtr->Next = BackPtr->Next; BackPtr->Next = NewPtr; } // end if BackPtr = NewPtr; // new node is at back } // end if return Success; } // end insert int Queue::del() { int Success = (!isEmpty()); if (Success) { // Queue is not empty; remove front ptrType FrontPtr = BackPtr->Next; if (FrontPtr == BackPtr) // special case? BackPtr = NULL; // yes, one node in Queue else BackPtr->Next = FrontPtr->Next; FrontPtr->Next = NULL; // defensive strategy delete FrontPtr; } // end if return Success; } // end del int Queue::del(queueItemType& QueueFront) { int Success = (!isEmpty()); if (Success) { // Queue is not empty; retrieve front ptrType FrontPtr = BackPtr->Next; QueueFront = FrontPtr->Item; Success = del(); // delete front } // end if return Success; } // end del int Queue::getFront(queueItemType& QueueFront) { int Success = (!isEmpty()); if (Success) { // Queue is not empty; retrieve front ptrType FrontPtr = BackPtr->Next; QueueFront = FrontPtr->Item; } // end if return Success; } // end getFront // End of implementation file.
Email Me | Office Hours | My Home Page | Department Home | MCC Home Page