循环队列的插入应该遵循这么一个公式来判断插入的位置
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;
}