码迷,mamicode.com
首页 > 其他好文 > 详细

队列模板

时间:2019-04-06 19:19:28      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:main   void   队列   i++   for   ++   size   ini   eof   

//队列:队首出,队尾进(先进先出表)
#include<iostream>
using namespace std;

const int MAXN = 1000 + 5;

struct Queue {
    int *queue;
    int front;
    int rear;
    int len;
};

//初始化队列
void InitQueue(Queue& Q) {
    Q.queue = new int[MAXN];
    Q.front = Q.rear = 0;
    Q.len = 0;
}

//入队
void InsertQueue(Queue& Q, int item) {
    Q.rear = (Q.rear + 1) % MAXN;
    Q.queue[Q.rear] = item;
    Q.len++;
}

//清空队列
void ClearQueue(Queue& Q) {
    if (Q.queue != NULL) delete[] Q.queue;
    Q.front = Q.rear = 0;
    Q.queue = NULL;
    Q.len = 0;
}

//出队
void PopQueue(Queue& Q) {
    Q.front = (Q.front + 1) % MAXN;
    Q.len--;
}

//求队首元素
int PeekQueue(Queue Q) {
    return Q.queue[(Q.front + 1) % MAXN];
}

//判断队列是否为空
bool EmptyQueue(Queue Q) {
    return Q.front == Q.rear;
}

int main() {
    Queue Q;
    InitQueue(Q);

    int a[] = { 2,4,5,6,7,9,10,3 };
    int l = sizeof(a) / sizeof(int);
    for (int i = 0; i < l; i++) {
        InsertQueue(Q, a[i]);
    }
    
    cout << Q.len << endl;//输出队列的长度

    cout << PeekQueue(Q) << endl;//查看队首元素

    PopQueue(Q);//删除队首元素
    PopQueue(Q);//删除队首元素

    //依次输出队列的元素
    while (!EmptyQueue(Q)) {
        cout << PeekQueue(Q) << " ";
        PopQueue(Q);
    }

    ClearQueue(Q);//清空队列
    return 0;
}

 

队列模板

标签:main   void   队列   i++   for   ++   size   ini   eof   

原文地址:https://www.cnblogs.com/Gzu_zb/p/10662332.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!