双端队列

今天为了写计算器,还特地写了一个双端队列,目前功能测试正常


//deque.h
#define MAXSIZE 10000
#define ERROR -1
template<typename DATATYPE>
class deque
{
private:
	DATATYPE * DEQUE;
	int pfront,prear;
public:
	deque();
	~deque();
	bool pop_back();
	bool pop_front();
	bool push_back(DATATYPE);
	bool push_front(DATATYPE);
	DATATYPE front();
	DATATYPE back();
	bool empty();
	void show();
};
template<typename DATATYPE> deque<DATATYPE>::deque()
{
	DEQUE=new DATATYPE[MAXSIZE];
	pfront=0,prear=1;
}
template<typename DATATYPE>deque<DATATYPE>::~deque()
{
	delete DEQUE;
}
template<typename DATATYPE>bool deque<DATATYPE>::pop_front()
{
	if(empty())return false;
	pfront=(pfront+1)%MAXSIZE;
	return true;
}
template<typename DATATYPE>bool deque<DATATYPE>::pop_back()
{
	if(empty())return false;
	prear=(prear+MAXSIZE-1)%MAXSIZE;
	return true;
}
template<typename DATATYPE>bool deque<DATATYPE>::push_front(DATATYPE T)
{
	if( (pfront+MAXSIZE-1)%MAXSIZE==prear)
		return false;
	DEQUE[pfront]=T;
	pfront=(pfront+MAXSIZE-1)%MAXSIZE;
	return true;
}
template<typename DATATYPE>bool deque<DATATYPE>::push_back(DATATYPE T)
{
	
	if((prear+1)%MAXSIZE==pfront)
		return false;
	DEQUE[prear]=T;
	prear=(prear+1)%MAXSIZE;
	return true;
}
template<typename DATATYPE>DATATYPE deque<DATATYPE>::front()
{
	if(!empty())
		return DEQUE[(pfront+1)%MAXSIZE];
	else throw ERROR;
}
template<typename DATATYPE>DATATYPE deque<DATATYPE>::back()
{
	if(!empty())
		return DEQUE[(prear+MAXSIZE-1)%MAXSIZE];
	else throw ERROR;
}
template<typename DATATYPE>bool deque<DATATYPE>::empty()
{
	if((pfront+1)%MAXSIZE==prear)return true;
	return false;
}
template<typename DATATYPE> void deque<DATATYPE>::show()
{
	int p=(pfront+1)%MAXSIZE;
	while(p%MAXSIZE!=prear)
	{
		std::cout<<DEQUE[p]<<" ";
		p=(p+1)%MAXSIZE;
	}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值