-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathQueueSize.cpp
More file actions
60 lines (60 loc) · 1.15 KB
/
QueueSize.cpp
File metadata and controls
60 lines (60 loc) · 1.15 KB
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
#include<iostream>
using namespace std;
const int QueueSize = 1000;
template<class T>
class CircleQueue
{
public:
CircleQueue() { front = rear = 0; }
void EnQueue(T x);
T Dequeue();
T GetFront();
int GetLength();
bool Empty()
{
return front == rear ? true : false;
}
private:
T data[QueueSize];
int front;
int rear;
};
template<class T>
T CircleQueue<T>::Dequeue()
{
if (rear == front)throw"ÉÏÒç";
front = (front + 1) % QueueSize;
return data[front];
}
template<class T>
void CircleQueue<T>::EnQueue(T x)
{
if ((rear + 1) % QueueSize == front) throw "ÉÏÒç";
rear = (rear + 1) % QueueSize;
data[rear] = x;
}
template<class T>
T CircleQueue<T>::GetFront()
{
if (rear == front) throw"ÏÂÒç";
return data[(front + 1) % QueueSize];
}
template<class T>
int CircleQueue<T>::GetLength()
{
return (rear - front + QueueSize) % QueueSize;
}
//void main()
//{
// CircleQueue<int> M;
// int a[5] = { 1,2,3,4,5 };
// cout << M.Empty() << endl;
// for (int i = 0;i < 5;i++)
// {
// M.EnQueue(a[i]);
// }
// cout << M.GetFront() << endl;
// M.Dequeue();
// cout << M.GetFront() << endl;
// cout << M.GetLength();
//}