今天我也是来更新一下了
各位看标题也因该都知道我今天要讲啥了
其实队列跟栈很相似只不过栈是先进后出,队列是先进先出
如上图
其实队列就跟我们排队一样
如果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;
}
}