#include <iostream>
using namespace std;
const int MAXSIZE = 6;
typedef int elemType;
typedef struct sqQueue {
elemType *base;
int front, rear;
}sqQueue;
bool initQueue(sqQueue &q) {
q.base = new elemType[MAXSIZE];
if (!q.base) return false;
q.front = q.rear = 0;
return true;
}
bool enQueue(sqQueue &q, int e) {
if ((q.rear + 1) % MAXSIZE == q.front) {
return false;
}
q.base[q.rear] = e;
q.rear = (q.rear + 1) % MAXSIZE;
return true;
}
bool deQueue(sqQueue &q, int &e) {
if (q.front == q.rear) {
return false;
}
e = q.base[q.front];
q.front = (q.front + 1) % MAXSIZE;
return true;
}
bool getQueue(sqQueue q, int &e) {
if (q.front != q.rear) {
e = q.base[q.front];
return true;
}
else
return false;
}
int getLength(sqQueue q) {
return (q.rear - q.front + MAXSIZE) % MAXSIZE;
}
int main() {
sqQueue q;
initQueue(q);
cout << "Queue length: " << getLength(q) << endl;
cout << "Put 1,2,3,4,5 in queue." <<endl;
for (int i = 1; i < 6; i++) {
enQueue(q, i);
}
cout << "Queue length: " << getLength(q) << endl;
int front;
cout << "Get queue front element: " << getQueue(q, front) << endl;
cout << "Dequeue all element: ";
int e;
for (int j = 1; j < 6; j++) {
deQueue(q, e);
cout << e << " ";
}
cout << endl;
cout << "Queue length: " << getLength(q);
return 0;
}
Output:
Queue length: 0
Put 1,2,3,4,5 in queue.
Queue length: 5
Get queue front element: 1
Dequeue all element: 1 2 3 4 5
Queue length: 0