C++结构体之队列

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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值