C++实现简单链式队列

#include <iostream>

using namespace std;

typedef int elemType;
typedef struct qNode {
    elemType data;
    struct qNode *next;
}qNode, *Qptr;

typedef struct {
    qNode *front;
    qNode *rear;
}linkQueue;

bool initQueue(linkQueue &q) {
    q.front = q.rear = new qNode;
    if (!q.front) return false;
    q.front->next = NULL;
    return true;
}

bool enQueue(linkQueue &q, int e) {
    Qptr s = new qNode;
    if (!s) return false;
    s->data = e;
    s->next = NULL;
    q.rear->next = s;
    q.rear = s;
    return true;
}

bool deQueue(linkQueue &q, int &e) {
    if (q.rear == q.front) {
        return false;
    }
    Qptr s;
    s = q.front->next;
    e = s->data;
    q.front->next = s->next;
    if (q.rear == s) q.rear = q.front;
    delete s;
    return true;
}

bool getHead(linkQueue q, int &e) {
    if (q.rear != q.front) {
        e = q.front->next->data;
        return true;
    }
    return false;
}

int main() {
    linkQueue q;
    initQueue(q);
    cout << "Put 1,2,3,4,5 in queue." <<endl;
    for (int i = 1; i < 6; i++) {
        enQueue(q, i);
    }
    cout << "Get front element of the queue:";
    int front;
    getHead(q, front);
    cout << front << endl;
    cout << "Dequeue all element: ";
    int e;
    for (int j = 1; j < 6; j++) {
        deQueue(q, e);
        cout << e << " ";
    }
    cout << endl;
    return 0;
}

Output:

Put 1,2,3,4,5 in queue.
Get front element of the queue:1
Dequeue all element: 1 2 3 4 5
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容