循环队列的模板实现(参考用)

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

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;
	}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值