数组模拟队列

题目

代码

#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
const int N = 100010;
int queue[N];
int hh = 0, tt = -1;

//[hh, tt] 之间为队列(左闭右闭)
//hh,tt无关联,将其分开看,两个参数各自有各自的意义。(tt相当于有了几个数)
void push_queue(int x)
{
    queue[++tt] = x;
}

void pop_queue()
{
    hh++;
}

int empty_queue()
{ // 1表示为空,0表示非空。
    if (tt >= hh)
        return 0;
    else
        return 1;
}

void query_queue()
{
    printf("%d\n", queue[hh]);
}

int main()
{
    int m, x;
    string str;
    cin >> m;
    while (m--)
    {
        cin >> str;
        if (str == "push")
        {
            cin >> x;
            push_queue(x);
        }
        else if (str == "pop")
        {
            pop_queue();
        }
        else if (str == "empty")
        {
            if (empty_queue() == 1)
            {
                cout << "YES" << endl;
            }
            else
            {
                cout << "NO" << endl;
            }
        }
        else if (str == "query")
        {
            query_queue();
        }
    }

    return 0;
}
posted @ 2025-02-27 16:46  electricity111  阅读(18)  评论(0)    收藏  举报