2. Implement and test a template for generating Queue classes. A queue works lik
ID: 3548488 • Letter: 2
Question
2. Implement and test a template for generating Queue classes. A queue works like a stack, except that insertions are made at one end of the linear structure and removed from the other end. Solution #include #include #include using namespace std; template class Queue { private: T *items; int rear; int front; int maxQue; int numOfitem; public: Queue() { int n = 10; maxQue = n; front = 0; rear = -1; numOfitem = 0; items = new T[maxQue]; } ~Queue() { delete[] items; } void Enqueue(T newitem) { rear = (rear + 1) % maxQue; items[rear] = newitem; numOfitem++; } void Dequeue() { numOfitem--; front = (front + 1) % maxQue; } int IsQueueEmpty() { return numOfitem == 0; } int IsQueueFull() { return numOfItems >= maxQue; } void display(); }; template void Queue ::display() { if (rear != front) { cout << "Queue Content : "; for (int i = (front) % maxQue;; i = (i + 1) % maxQue) { cout << items[i] << " "; if (i == rear) { break; } } } } int main() { int num; double n = 10; Queue Q; int newitem; cout << "Test for integer queue" << endl << endl; for (int i = 0; i < 5; i++) { cout << " Enter the New item to insert in queue : "; cin >> newitem; Q.Enqueue(newitem); } cout << endl << endl; Q.display(); cout << endl << endl; cout << "After Dequing one time "; Q.Dequeue(); Q.display(); cout << endl << endl; cout << "After Dequing second time "; Q.Dequeue(); Q.display(); cout << endl; cout << endl << "================================================" << endl; cout << "Test for double queue" << endl << endl; Queue Q1; double newitem1; for (int i = 0; i < 5; i++) { cout << " Enter the New item to insert in queue : "; cin >> newitem1; Q1.Enqueue(newitem1); } cout << endl << endl; Q1.display(); cout << endl << endl; cout << "After Dequing one time "; Q1.Dequeue(); Q1.display(); cout << endl << endl; cout << "After Dequing second time "; Q1.Dequeue(); Q1.display(); cout << endl; cout << endl << "================================================" << endl; system("pause"); return 0; } I need New and different Source codeExplanation / Answer
template <class QueueItem> class Queue {
private:
QueueItem buffer[100];
int head, tail, count;
public:
Queue();
void Insert(QueueItem item);
QueueItem Remove();
int Size();
~Queue();
};
template <class QueueItem>
Queue<QueueItem>::Queue() : count(0), head(0), tail(0) {}
template <class QueueItem>
void Queue<QueueItem>::Insert(QueueItem item) {
assert(count <100);
buffer[tail] = item;
tail = (tail + 1)% 100;
count++;
}
template <class QueueItem>
QueueItem Queue<QueueItem>::Remove() {
assert(count > 0);
int val = head;
head = (head + 1)%100;
count--;
return buffer[val];
}
template <class QueueItem>
int Queue<QueueItem>::Size() { return count; }
template <class QueueItem>
Queue<QueueItem>::~Queue() {}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.