循环队列的插入应该遵循这么一个公式来判断插入的位置

pos = (pos + 1) % length;  其中length表示元素的个数

循环队列中应该具有的元素如下:

template <typename Type> class Queue {
private:
	Type *data;
	int head, tail, length, count;  //通过判断元素个数,决定能否继续插入
public:
	Queue(int length_input) {
		data = new Type[length_input];
		length = length_input;   
		head = 0;
		tail = -1;
		count = 0;
	}
	~Queue() {
		delete[] data;
	}
}

head指向队列中的第一个元素,tail指向队列的最后一个元素,count统计队列中元素的数量和length进行比较

队列的插入操作:

bool push(Type element) {
		if (count >= length) {
			return false;
		}
		//取模运算
		tail = (tail + 1) % length;  //进行取模运算判断队列的插入位置
		data[tail] = element;
		count++;
		return true;
	}

队列的输出操作:

void output() {
		int i = head;
		do {
			cout << data[i] << " ";
			i = (i + 1) % length;
		} while (i != (tail + 1) % length);  //对应元素的下一个位置
		cout << endl;
	}

队列的移动操作:

void pop() {
        head = (head + 1) % length;   //向后移动即可
}

判断队列是否为空:只需判断count == 0 就可以了

void empty() {
		return count == 0;
	}