C++/Generic/Generic Queue
Create a generic queue.
<source lang="cpp">
- include <iostream>
using namespace std;
- define SIZE 100
template <class Qtype> class q_type {
Qtype queue[SIZE]; int head, tail;
public:
q_type() { head = tail = 0; } void q(Qtype num); Qtype deq();
}; template <class Qtype> void q_type<Qtype>::q(Qtype num) {
if(tail+1==head || (tail+1==SIZE && !head)) { cout << "Queue is full.\n"; return; } tail++; if(tail==SIZE) tail = 0; // cycle around queue[tail] = num;
} template <class Qtype> Qtype q_type<Qtype>::deq() {
if(head == tail) { cout << "Queue is empty.\n"; return 0; } head++; if(head==SIZE) head = 0; return queue[head];
} int main() {
q_type<int> queue1; q_type<char> queue2; int i; for(i=1; i <=10; i++) { queue1.q(i); queue2.q(i-1+"A"); } for(i=1; i <=10; i++) { cout << "Dequeue 1: " << queue1.deq() << endl; cout << "Dequeue 2: " << queue2.deq() << endl; } return 0;
}
</source>