今天我也是来更新一下了

各位看标题也因该都知道我今天要讲啥了

其实队列跟栈很相似只不过栈是先进后出,队列是先进先出

alt

如上图

其实队列就跟我们排队一样

如果A先进那么A就先出

这就是队列的基本性质了

我们来做点练习吧(答案放在了文章结尾)

1.有一个队列q,进入队列的顺序为2 3 4 5 8 9则出队列顺序为


好了我们现在讲队列的应用

队列的建立是queue<int/long long/char/string/......> h(变量) (待写完)

参考题目

舞会

题目描述

在周末舞会上,男生和女生各自排成一队,跳舞开始时,依次从男队和女队的对头各出一人配成舞伴,规定每个舞曲只有一对跳舞者。舞曲结束后,他们又回到各自的队伍末尾继续等待。现在写一个程序模拟上述舞伴配对问题。所有的名字长度小于20,男生,女生人数均不超过10000,舞曲的数量不超过10000

输入格式

•输入:第一行:所有男生的名字,以空格隔开 •第二行:所有女生的名字,以空格隔开 •第三行:一个整数n,舞曲的数目

输出格式

n行,每行两个字符串,分别表示男生的名字和女生的名字。

样例

样例输入

phqghumeay lnlfdxfirc vscxggbwkf nqduxwfnfo
zvsrtkjpre pggxrpnrvy stmwcysyyc qpevikeffm znimkkasvw
9

样例输出

phqghumeay zvsrtkjpre
nlfdxfirc pggxrpnrvy
vscxggbwkf stmwcysyyc
nqduxwfnfo qpevikeffm
phqghumeay znimkkasvw
lnlfdxfirc zvsrtkjpre
vscxggbwkf pggxrpnrvy
nqduxwfnfo stmwcysyyc
phqghumeay qpevikeffm

参考代码

#include <bits/stdc++.h>
using namespace std;
queue<string> dad1;
queue<string> dad2;
int main() {
    char a[100000], name[25];
    memset(a, ' ', sizeof(a));
    gets(a);
    for (int i = 0; i < strlen(a); i++) {
        int j = 0;
        while (a[i] != ' ') {
            name[j] = a[i];
            i++;
            j++;
        }
        dad1.push(name);
    }
    memset(a, ' ', sizeof(a));
    gets(a);
    for (int i = 0; i < strlen(a); i++) {
        int j = 0;
        while (a[i] != ' ') {
            name[j] = a[i];
            i++;
            j++;
        }
        dad2.push(name);
    }
    int n;
    cin >> n;
    for (int i = 1; i <= n; i++) {
        string t1 = dad1.front(), t2 = dad2.front();
        dad1.pop();
        dad2.pop();
        dad1.push(t1);
        dad2.push(t2);
        cout << t1 << " " << t2 << endl;
    }
}