Mega Code Archive

 
Categories / C++ / Generic
 

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; }