Directions: Follow the insttructions of implementation and then fill in the following code for QueueArray class Both given below: 5.2 Implement QueueArray<DataType>::QueueArray(const QueueArray& other) template <typename DataType> QueueArray<DataType>::QueueArray(const QueueArray& other) { } template <typename DataType> QueueArray<DataType>& QueueArray<DataType>::operator=(const QueueArray& other) { } Solution QueueArray<DataType>::QueueArray(const QueueArray& other) { maxSize = NULL; front = -1; back = -1; dataItems = NULL; *this = other; } template <typename DataType> QueueArray<DataType>& QueueArray<DataType>::operator=(const QueueArray& other) { int cursor = -1; if(this == &other) { return *this; } else { if(maxSize != other.maxSize) { maxSize = other.maxSize; if(dataItems != NULL) { delete[] dataItems; } dataItems = new DataType[maxSize]; } front = other.front; back = other.back; cursor = front; if((front == back) && (front > -1)) { dataItems[cursor] = other.dataItems[cursor]; } else if(front > -1) { do { if(cursor == maxSize) { cursor = 0; } dataItems[cursor] = other.dataItems[cursor]; ++cursor; } while(cursor != (back + 1)); } } return *this; } .