C++实现简单循环队列

#include 

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

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

你可能感兴趣的:(C++实现简单循环队列)