C++实现简单循环队列

#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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容