数据结构— 数组循环队列C++

#ifndef STL_STACK_SDJFKLSD
#define STL_STACK_SDJFKLSD
/************************************************************************/
/* 数组循环队列C++------空间利用率较高的
/************************************************************************/

template<class Elemplent>
class CircleStack
{
protected:
	int front,rear;
	Elemplent * elemPtr;
	int maxTotal;
	int CountTotal;
public:
	CircleStack(int size = 1000);
	~CircleStack();
	void InitCircleStack(int size );
	CircleStack(const  CircleStack<Elemplent>& tempCircle);
	CircleStack<Elemplent>& operator= (const const  CircleStack<Elemplent>& tempCircle);
public:
	int Getlength();
	bool IsEmtpy();
	bool IsFull();
	void Clear();
	bool OutQueue();
	bool GetHead(Elemplent & tempElem)const;
	bool InQueue(const Elemplent& temElem);
};
template<class Elemplent>
CircleStack<Elemplent>::CircleStack(int size)
{
	InitCircleStack(size);
};

template<class Elemplent>
CircleStack<Elemplent>::~CircleStack()
{

};

template<class Elemplent>
void CircleStack<Elemplent>::InitCircleStack(int size)
{
	front = rear  = 0;
	elemPtr = new Elemplent[maxTotal];
	maxTotal =1000;
}

template<class Elemplent>
int CircleStack<Elemplent>::Getlength()
{
	return CountTotal;
}

template<class Elemplent>
bool CircleStack<Elemplent>::IsEmtpy()
{
	if ((front+1)%maxTotal == rear)
	{
		return return
	}
	return false;
}


template<class Elemplent>
bool CircleStack<Elemplent>::IsFull()
{
	if ((rear+1)%maxTotal == front)
	{
		return true;
	}
	return false;
}
template<class Elemplent>
bool CircleStack<Elemplent>::GetHead(Elemplent & tempElem)
{
	if (IsEmtpy())
	{
		return false;
	}
	tempElem = tempElem[front];
	return true;
}

template<class Elemplent>
bool CircleStack<Elemplent>::InQueue(const Elemplent& temElem)
{
	if (IsFull())
	{
		return false;
	}
	elemPtr[rear]=e;
	rear = (rear+1)%maxTotal;
	CountTotal++;
	return true;
}

template <class Elemplent>
bool CircleStack<Elemplent>::OutQueue()
{
	if (IsEmtpy())
	{
		return false;
	}
	front = (front+1)% maxTotal;
	CountTotal--;
	return true;
}
template <class Elemplent>
void CircleStack<Elemplent>::Clear()
{
	front = rear = 0;
}

template<class Elemplent>
CircleStack<Elemplent>::CircleStack(const CircleStack<Elemplent>& tempCircle)
{

	elemPtr = NULL;
	front = tempCircle.front;
	rear = tempCircle.rear;
	//上面的三个给忘了初始化!
	int length = tempCircle.Getlength();
	InitCircleStack(tempCircle.maxTotal);


	for (int i = 0;i<length;i++)
	{
		elemPtr[i]=tempCircle.elemPtr[i];
	}
	return *this;
}
template<class Elemplent>
CircleStack<Elemplent>& CircleStack<Elemplent>::operator=(const CircleStack<Elemplent>& tempCircle)
{
	if (this == &tempCircle)
	{
		return *this;
	}
	elemPtr = NULL;
	front = tempCircle.front;
	rear = tempCircle.rear;
	//上面的三个给忘了初始化!
	int length = tempCircle.Getlength();
	InitCircleStack(tempCircle.maxTotal);
	for (int i = 0;i<length;i++)
	{
		elemPtr[i]=tempCircle.elemPtr[i];
	}
	return *this;
}

/************************************************************************/
/* 刚刚看了一个mi2的视频,心里很是感慨,一个十三岁的女孩,
/*那么单纯,那么纯洁,哎!好像自己有一个miki
/*想想她以后要面对社会的摧残,时间的毁灭性的打击,心里不住一阵心痛,
/*生老病死,,,难道这就是人的一生,难道一个生命的这就这样悄无声息的来了一次地球?
/*三个字:我脆了。。。
/************************************************************************/

#endif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值