1,队列定义 :
队列定义 队列是⼀种先进先出(FIFO)的线性表。只能在线性表的⼀端进⾏插⼊操作,在另⼀端进⾏删除操作。类似与⽣活中的排队购票,先来先买,后来后买。
在不断⼊队、出队的过程中,队列将会呈现初以下⼏种状态: 队满:队列空间已被全被占⽤ 队空:队列中没有任何元素。 溢出:当队列满时,却还有元素要⼊队,就会出现“上溢”;当队列已空, 却还要做“出队”操作,就会出现“下溢”。两种情况合在⼀起称为队列的“溢出”。
英文queue
n.
(储存的数据)队列;(人、汽车等的)队,行列;
v.
(人、车等)排队等候;(使)排队;列队等待;
2,队列应用:
2、队列的应⽤ 【题⽬描述】 假设在周末舞会上,男⼠们和⼥⼠们进⼊舞厅时,各⾃排成⼀队。跳舞开始时, 依次从男队和⼥队的队头上各出⼀⼈配成舞伴。规定每个舞曲能有⼀对跳舞者。若 两队初始⼈数不相同,则较⻓的那⼀队中未配对者等待下⼀轮舞曲。现要求写⼀个 程序,模拟上述舞伴配对问题。(这道题很经典)
【输⼊】 第⼀⾏男⼠⼈数 m 和⼥⼠⼈数 n; 第⼆⾏舞曲的数⽬ k。
【输出】 共 k ⾏,每⾏两个数,表示配对舞伴的序号,男⼠在前,⼥⼠在后。
【样例输⼊】 2 4
6
【样例输出】 1 1
2 2
1 3
2 4
1 1
2 2
【解题思路】 显然,舞伴配对的顺序符合“先进先出”,所以⽤两个队列分别存放男⼠队伍和⼥⼠ 队伍,然后模拟 k 次配对:每次取各队队头元素“配对”输出,并进⾏“出队”和重新 “⼊队”的操作。
代码示例
#include<iostream>
using namespace std;
int a[10001],b[10001],k1=1,k,i,f1=1,r1,f2=1,r2;
int main( void )
{
int m,n;
cin>>m>>n;
cin>>k;
for (i=1;i<=m;i++)
a[i]=i;
for (i=1;i<=n;i++)
b[i]=i;
r1=m;
r2=n;
while (k1<=k)
{
cout<<a[f1]<<" "<<b[f2]<<endl;
r1++;
a[r1]=a[f1];
f1++;
r2++;
b[r2]=b[f2];
f2++;
k1++;
}
return 0;
}