手写还算好用的 queue和Dequeue 为STL依赖党做些微小的工作 队列和双端队列

本文介绍了作者在经历多次TLE后决定手写queue和Dequeue,以提高效率。提供了Queue类的实现,包括push、pop、front、empty等基本操作,并增加了next和pre辅助函数。同时,更新后的Dequeue采用模板编程,支持多种类型,提供front、back、empty、size等查询操作以及push_front、pop_front、push_back、pop_back的修改操作。代码设计考虑了自动扩容,但建议根据需求手动设置容量以优化性能。
摘要由CSDN通过智能技术生成

2020/2/22 20:02 重新编辑了该文章,将 Dequeue 完善了。

—————————————————— 原文分割线 ——————————————————————

 

之前一直依赖STL,在无数次TLE的漩涡中。。本萌新终于下定决心手写了queue和dequeue

 

首先是Queue,实现的功能有:

1.push,pop,front,empty 这四个基本操作

2.附带两个函数next和pre,用于在数组模拟队列的时候方便获取下一个位置,防止下标越界

3.内部有报错

局限性:

1.目前这个只能是int类型。。

2.其实最大长度是固定的,一开始就要设置好,默认为1。设置方式就是:Queue u(999);放在构造函数当中了

3.构造函数中用了data=new int[x]; 

PS:可以一开始用STL的写了之后,把这个复制过去,把queue<int>全部替换成Queue就行了。

 

Queue代码如下:

 

 

struct Queue
{
	int f,r;
	int *data;
	int sz;
	Queue(int x=1)
	{
		f=r=0;
		sz=x;
		data=new int[x];
	}
	int next(int x) {return (x+1)%sz;}
	int pre(int x) {return (sz+x-1)%sz;}
	bool push(int x)
	{
		if(next(r)==pre(f))
		{
			c
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值