⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cqueuevector.h

📁 农夫过河问题的解决方法
💻 H
字号:
#ifndef cqueueVector
#define cqueueVector
#include"cqueue.h"
#include "assert.h"
template<class T>class vector;
template<class T>class queueVector:public queue<T>
{
	public:
		queueVector(unsigned int size);
		queueVector(queueVector & v);
		virtual void deleteAllValues();
		virtual T dequeue();
		virtual void enqueue(T value);
		virtual T front();
		virtual int isEmpty()const;
	protected:
		vector<T>data;
		unsigned int max;
		unsigned int nextSlot;
		unsigned int nextUse;
};

template<class T>
queueVector<T>::queueVector(queueVector & v)
{
}

template<class T>
queueVector<T>::queueVector(unsigned int size):max(size),data(size)
{
	deleteAllValues();
}

template<class T>
void queueVector<T>::deleteAllValues()
{
	nextSlot=0;
	nextUse=0;
}

template<class T>
int queueVector<T>::isEmpty()const
{
	return nextSlot==nextUse;
}

template<class T>
void queueVector<T>::enqueue(T val)
{
	data[nextSlot++]=val;
	if(nextSlot>=max)
		nextSlot=0;
	assert(nextSlot!=nextUse);
}

template<class T>T queueVector<T>::front()
{
	assert(!isEmpty());
	return data[nextUse];
}

template<class T>T queueVector<T>::dequeue()
{
	assert(!isEmpty());
	int dataloc=nextUse;
	nextUse++;
		if(nextUse>=max)
			nextUse=0;
		return data[dataloc];
}
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -