include iostream define 11 using namespace std template class Data cla

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include <iostream>
#define N 11
using namespace std;
template <class Data>
class Queue
{
int front, rear; //индексы головы и хвоста
Data data[N]; //массив для хранения элементов
public:
Queue () {front=0; rear=N-1;}
int Empty (void); //проверка на пустоту
int Full (void); //проверка на полноту заполнения
//DataType Front (void); //неразрушающее чтение элемента
void EnQueue (Data x); //добавление элемента в очередь
Data DeQueue (void); //извлечение элемента из очереди
};
template <class Data>
int Queue<Data>::Empty(void)
{
return (rear+1)%N == front;
}
template <class Data>
int Queue<Data>::Full(void)
{
return (rear+2)%N == front;
}
template <class Data>
void Queue <Data>::EnQueue (Data x)
{
if (Full()) return ;
rear = (rear+1)%N;
data[rear] = x;
return ;
}
template <class Data>
Data Queue<Data>::DeQueue (void)
{
int temp = front;
front = (front+1)%N;
return data[temp];
}
int main()
{
setlocale(LC_ALL, "Russian");
Queue <char>ClaChar;
Queue <double>ClaDouble;
int i;
double j;
for (i=65; i<76; i++)
ClaChar.EnQueue (i);
cout<<" Класс char: ";
while (!ClaChar.Empty())
cout<<ClaChar.DeQueue()<<" ";
cout<<endl;
for (j=1.; j<6.; j+=0.5)
ClaDouble.EnQueue (j);
cout<<" Класс double: ";
while (!ClaDouble.Empty())
cout<<ClaDouble.DeQueue()<<" ";
return 0;
}