队列使用方法详细讲解

队列详细讲解

队列是一种先进先出的线性表,它只允许在表的一段进行插入元素,在表的另一端删除元素,先进先出,插入的一端叫做队尾(back),删除的一段叫做对头(front)

队列定义在<queun>头文件中

下面代码是队列成员的函数原型:

//-----容量capacity-----
bool empty();//测试是否为空队列
size_type size();//返回队列长度

//-----元素存取element access----
front();//返回对头元素
back();//返回队尾元素

//----队列运算----
void push(const T& x);//插入一个元素到队尾
void pop();//删除队列下一个元素

队列应用举例:

先看代码:

#include<iostream>
#include<queue>
using namespace std;	//队列定义在命名空间
int main()
{
	queue<int> Q;
	for (int i = 1; i <= 6; i++) Q.push(i);    //队列Q:1 2 3 4 5 6 
	Q.front() -= Q.back();//Q:-5 1 2 3 4 5
	while (!Q.empty()) {
		cout << Q.front() << " ";
		Q.pop();	//出队
	}
	return 0;
}

用队列的方法来解决实际问题:

例题:桌上有一叠牌,从第一张牌 开始从上往下依次编号1~n。当至少还剩两张牌时进行如下的操作:

把第一张牌扔掉,然后把新的第一张牌放到整碟牌的最后。输入总牌数,输出每次扔掉的牌,以及最后剩下的两张牌

例如:总牌数为7

输入:7

输出:1 3 5 7 4 2 6

1 2 3 4 5 6 7

3 4 5 6 7 2

5 6 7 2 4

7 2 4 6

4 6 2

2 6

解题代码如下:

#include<iostream>
#include<queue>
using namespace std;
int main()
{
	queue<int> q;	//声明队列
	int n;			//输出总的牌数
	cin >> n;
	for (int i = 0; i < n; i++)
		q.push(i + 1);		//将1~7放到队列里面去
	while (q.size() > 2)
	{
		cout << q.front() << " ";	//输出队列第一个元素
		q.pop();					//将队列第一个元素出队
		q.push(q.front());          //将现队列第一个元素放入到队尾
		q.pop();					//现队列的第一个元素出队
	}	
	cout << endl;
	while (!q.empty())
	{
		cout << q.front() << " ";	//输出队列中剩余的元素
		q.pop();
	}
	return 0;
}

 

 

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Redis消息队列是一种基于内存的队列,用于在应用程序之间或不同服务之间传输消息。Redis作为一个高性能的内存数据库,可以快速地将消息存储在内存中,并提供了一系列的指令来操作这些消息。在Redis中,消息队列通常使用List数据结构来实现。 以下是Redis消息队列详细讲解: 1. Redis List数据结构 Redis的List是一个双向链表,可以在列表的两端进行插入和删除操作。在Redis中,List可以用于实现队列、栈等数据结构。List中的每个元素都是一个字符串。 2. Redis消息队列的实现 Redis消息队列的实现通常使用List数据结构,其中List的头部作为队列的入口,尾部作为队列的出口。当有新的消息进入队列时,使用LPUSH指令将消息插入到List的头部,当有消费者需要消费消息时,使用RPOP指令从List的尾部弹出一条消息。 3. 消息队列的生产者和消费者 Redis消息队列有生产者和消费者两个角色。生产者负责向队列中添加消息,消费者则负责从队列中取出消息进行处理。由于Redis是一个高性能的内存数据库,可以快速地将消息存储在内存中,并提供了一系列的指令来操作这些消息,因此Redis消息队列可以高效地实现生产者和消费者之间的消息传递。 4. 消息队列的应用场景 Redis消息队列可以应用于很多场景,比如异步任务处理、实时消息推送、日志处理等。在异步任务处理中,可以将需要异步处理的任务放入队列中,由消费者从队列中取出任务进行处理,从而提高任务处理的效率。在实时消息推送中,可以使用Redis消息队列来实现消息的分发,从而提高消息的实时性和可靠性。在日志处理中,可以将日志信息放入队列中,由消费者从队列中取出日志信息进行处理,从而实现日志的实时处理和分析。 总之,Redis消息队列是一种高效、可靠的消息传递机制,可以应用于各种场景中,是构建分布式系统的重要组件之一。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值