php 异步执行循环队列,循环队列实现(C++)

循环队列实现(C++)

LucasNan • 2020 年 04 月 29 日

Loading...

## 循环队列

![循环队列工作原理图][1]

### 从上图我们可以总结出循环队列工作的要点

1. 队列空的条件:head == tail

2. 队列满的条件:(tail + 1) % maxlen == head

3. 约定数组最多存放maxlen - 1个元素

4. 当队列为空时,head和tail都置为-1,重新从0开始存放元素

### C++实现循环队列

class MyCircularQueue {

private:

vector myqueue;

int maxlen;

int head;

int tail;

public:

/** Initialize your data structure here. Set the size of the queue to be k. */

MyCircularQueue(int k) {

myqueue.resize(k+1);

maxlen = k;

head = -1; // head和tail都初始化为-1当元素入队时再从0开始

tail = -1;

}

/** Insert an element into the circular queue. Return true if the operation is successful. */

bool enQueue(int value) {

if(!isFull()){

if(isEmpty())

head = 0;

tail = (tail + 1) % maxlen;

myqueue[tail] = value;

return true;

}

return false;

}

/** Delete an element from the circular queue. Return true if the operation is successful. */

bool deQueue() {

if(isEmpty())

return false;

else{

if(head == tail){

head = -1; // 当队列为空时,head和tail都置为-1,再有元素入队重新从0开始

tail = -1;

return true;

}

head = (head + 1) % maxlen;

return true;

}

}

/** Get the front item from the queue. */

int Front() {

if(!isEmpty())

return myqueue[head];

else

return -1;

}

/** Get the last item from the queue. */

int Rear() {

if(!isEmpty()){

return myqueue[tail];

}

return -1;

}

/** Checks whether the circular queue is empty or not. */

bool isEmpty() {

if(head == -1)

return true;

else

return false;

}

/** Checks whether the circular queue is full or not. */

bool isFull() {

if((tail+1) % maxlen == head)

return true;

else

return false;

}

};

[1]: http://kevinnan.org.cn/usr/uploads/2020/04/3943780676.png

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值