队列同堆栈一样,是一种运算受限的线性表,其限制是仅允许在表的一端进行插入,而在表的另一端进行删除。

以下内容全为个人理解。

#include <queue>
#include <iostream>
using namespace std;
int main()
{
    queue<char> q;
    char a = 'A';
    q.push(a);
    q.push('B');
    q.push(67);
    cout << "在队列末尾依次插入 A B C" << endl;

    char u = q.back();
    cout << "队列最后一个元素为:" << u << endl;

    char v = q.front();
    cout << "队列第一个元素为:" << v << endl;

    q.pop();
    v = q.front();
    cout << "删除第一个元素后,队列第一个元素为:" << v << endl;

    int size = q.size();
    cout << "队列中存在 " << size << " 个元素" << endl;

    cout << "判断队列是否为空,清空前:" << q.empty() << endl;

    while (!q.empty())
        q.pop();

    cout << "清空后:" << q.empty() << endl;
    return 0;
}

输出:

在队列末尾依次插入 A B C
队列最后一个元素为:C
队列第一个元素为:A
删除第一个元素后,队列第一个元素为:B
队列中存在 2 个元素
判断队列是否为空,清空前:0
清空后:1

举例

题目:约瑟夫问题

AC 代码:

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

int m, n, i = 1;
int main()
{
    cin >> m >> n;
    queue<int> a;
    for (int i = 1; i < m + 1; i++)
        a.push(i);
    while (a.empty() != 1)
    {
        if (i == n)
        {
            cout << a.front() << " ";
            i = 1;
        }
        else
        {
            a.push(a.front());
            i++;
        }
        a.pop();
    }
    return 0;
}
最后修改:2019 年 11 月 09 日 09 : 09 PM
如果觉得我的文章对你有用,请随意赞赏