数据结构算法——1012. 环形队列

该博客介绍了如何使用C++实现一个环形队列,并提供了enqueue和dequeue操作的详细代码。通过满标志判断队列状态,实现队列的入队和出队操作。示例展示了在不同操作下队列的动态变化。

题目

在这里插入图片描述
10
enqueue 138
enqueue 1461
enqueue 12813
dequeue
enqueue 3627
dequeue
dequeue
enqueue 2291
enqueue 31871
dequeue
答案
138
1461
12813
3627

思路

显然要用满所有的空间,只能用flag法来进行栈满操作

代码

#include<bits/stdc++.h>
using namespace std;
int const MAXN = 100001;
struct cir_queue
{
    long long ptr[MAXN];
    int head = 0;
    int tail = 0;
    bool full = false;
    
    int in(long long data)
    {
        if(head == tail && full)
        {
            cout << "Full" << endl;
            return 0;
        }
        ptr[tail] = data;
        tail = (tail + 1) % MAXN;
        if(tail == head && !full) full = true;
        return 1;
    }

    int out()
    {
        if(head == tail && !full)
        {
            cout << "-1" << endl;
            return 0;
        } 

        cout << ptr[head] << endl;
        head = (head + 1) % MAXN;
        if(tail == head - 1 && full) full = false;
        return 1;
    }
};

int main()
{
    int n;
    cin >> n;
    string str;
    cir_queue C;
    for(int i = 0; i < n; i++)
    {
        cin >> str;
        if(str == "enqueue")
        {
            long long temp;
            cin >> temp;
            C.in(temp);
        }
        else
            C.out();
    }

}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值