Create a generic queue.
#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; }