队列

C++队列queue模板类的定义在<queue>头文件中,queue 模板类需要两个模板参数,一个是元素类型,一个容器类型,元素类型是必要的,容器类型是可选的。C++队列queue是一种容器适配器,它给予程序员一种先进先出(FIFO)的数据结构。

C++队列Queue类成员函数如下:

back()返回最后一个元素
empty()如果队列空则返回真
front()返回第一个元素
pop()删除第一个元素
push()在末尾加入一个元素
size()返回队列中元素的个数

Queue 的基本操作举例如下:

queue入队,如例:q.push(x);将x 接到队列的末端。
queue出队,如例:q.pop();弹出队列的第一个元素,注意,并不会返回被弹出元素的值。
访问queue队首元素,如例:q.front(),即最早被压入队列的元素。
访问queue队尾元素,如例:q.back(),即最后被压入队列的元素。
判断queue队列空,如例:q.empty(),当队列空时,返回true。
访问队列中的元素个数,如例:q.size()。

 

 

题目描述

nn 个人围成一圈,从第一个人开始报数,数到 mm 的人出列,再由下一个人重新从 11 开始报数,数到 mm 的人再出圈,依次类推,直到所有的人都出圈,请输出依次出圈人的编号。

输入格式

输入两个整数 n,mn,m。

输出格式

输出一行 nn 个整数,按顺序输出每个出圈人的编号。

 

    #include<iostream>
    #include<queue>
    using namespace std;

    int main()
    {
        int tot, outNum, nowNum = 1;
        queue<int> q;
        cin >> tot >> outNum;                        //读取数据
        for (int i = 1; i <= tot; i++)q.push(i);    //初始化队列
        while (!q.empty())                    //在队列不为空时继续模拟
        {
            if (nowNum == outNum)
            {
                cout << q.front() << " ";    //打印出局的人的编号
                q.pop();                    //出局
                nowNum = 1;                    //初始化现在的数字
            }
            else
            {
                nowNum++;
                q.push(q.front());            //排至队尾
                q.pop();
            }
        }
        cout << endl;
        return 0;
}

 

原文链接: https://www.cnblogs.com/lau1997/p/12629001.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    队列

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/339720

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月2日 上午12:15
下一篇 2023年3月2日 上午12:15

相关推荐