C++/Generic/Generic Queue

Материал из C\C++ эксперт
Перейти к: навигация, поиск

Create a generic queue.

<source lang="cpp">

  1. include <iostream>

using namespace std;

  1. 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>