// NAME: Ian Rosner // CLASS: CISP430 Spring 2014 Huang // STUDENT ID: W1387836 // Purpose: implementation of circular array queue as defined in CISP430V4Header.h #include #include //for setw() template queueType::queueType(int queueSize) //defaults to 100 { //set maxQueueSize -- if size passed is <= 0, default to 100 if (queueSize <= 0) { //alert user of error cout << "Size of the array to hold the queue must " << "be positive." << endl; cout << "Creating an array of size 100." << endl< queueType::~queueType() { delete [] list; //release memory to the heap } //end destructor template bool queueType::isEmptyQueue() { return (count == 0); } //end isEmptyQueue() template bool queueType::isFullQueue() { return(count == maxQueueSize); } //end isFullQueue() template void queueType::push(const RecordType& newElement) { if (isFullQueue() == false) { last = next_index(last); //update last to new index list[next_index(last)] = newElement; //insert new element into circular array count++; //one more item added, increment count } else cerr << "Cannot add to a full queue" << endl; } //end push() template RecordType queueType::front() //Type changed to RecordType { assert(!isEmptyQueue()); return list[first]; //changed from list[0] } //end front() template RecordType queueType::back() //Type changed to RecordType { assert(!isEmptyQueue()); return list[rear]; //changed from list[count - 1]; } //end back() template void queueType::pop() { if (!isEmptyQueue()) //check precondition { first = next_index(first); //advance to next item in queue count--; //one less item -- decrement count } else //if precondition is not met... cerr << "Cannot remove from an empty queue" << endl; } //end pop() template void queueType::print() { int counter = 0; cout<<"This Queue contains " << count << " elements." << endl; while (!isEmptyQueue()) { cout << setw(3) << front() << " "; pop(); counter++; if ((counter % 10)==0) cout<< endl; } cout< int queueType::getmaxQueueSize() { //fixed whitespace return maxQueueSize; } //end getmaxQueueSize() template int queueType::next_index(int i) { return ((i + 1) % maxQueueSize); } //end next_index(i)