队列
底层维护一个数组,实现队列的入队\出队操作。
public class Queue {
int capcity = 5;
int front, rear;
int[] queue = new int[capcity];
public Queue() {
this.front = -1;
this.rear = -1;
}
//首先要有一个判断对列是否为空的函数
private boolean isEmpty() {
return front == -1 ? true : false;
}
//判读数组是否满的函数
private boolean isFull() {
return front == 0 && rear == capcity - 1 ? true : false;
}
//入队操作
public void enqueue(int item) {
if (isFull())
System.out.println("该队列已满!");
else {
if (isEmpty())
front = 0;
rear++;
queue[rear] = item;
}
}
//出队操作
public int dequeue() {
int item;
if (isEmpty()) {
System.out.println("队列已空,无法出队");
return -1;
} else {
item = queue[front];
if (front >= rear) {
front = -1;
rear = -1;
} else {
front++;
}
return item;
}
}
@Override
public String toString() {
if (isEmpty())
return "对列为空";
StringBuilder sb = new StringBuilder();
sb.append("[");
for (int i = front; i <= rear; i++) {
if (i != rear) {
sb.append(queue[i] + ",");
} else {
sb.append(queue[capcity - 1]);
}
}
sb.append("]");
return sb.toString();
}
}
环形队列
public class CirQueue {
int size;
int front, rear;
int[] items = new int[size];
//判断是否为full
private boolean isFull() {
if (front == 0 && rear == size - 1) {
return true;
}
if (rear + 1 == front) {
return true;
}
return false;
}
//判断是否为空
private boolean isEmpty() {
return front == -1 ? true : false;
}
//入队
public void dequeue(int item) {
if (isFull()) {
System.out.println("full");
} else {
if (front == -1)
front = 0;
rear = (rear + 1) % size;
items[rear] = item;
}
}
//出队
public int dequeue() {
int res;
if (isFull()) {
System.out.println("enpty");
return -1;
} else {
res = items[rear];
if (front >= rear) {
front = -1;
rear = -1;
} else {
front = (front + 1) % size;
}
return res;
}
}
}
环形队列的注意点 是 ,当添加时 如果添加的rear 要超出索引 那么就要让(rear + 1) % size 取余数。同样在出队的时候 front 也要取余数。
推广
云数据库RDS MySQL 版是全球最受欢迎的开源数据库之一,作为开源软件组合 LAMP(Linux + Apache + MySQL + Perl/PHP/Python) 中的重要一环,广泛应用于各类应用场景。
点击查看->>> 云数据库新年钜惠,新用户1折起,爆款5-8折,MySQL 1年仅需19.9元.
云服务器ECS
云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的云计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。专业的售前技术支持,协助您选择最合适配置方案
点击查看->>> 弹性计算10年深厚技术积淀,技术领先、性能优异、 稳如磐石.
短信服务(Short Message Service)是广大企业客户快速触达手机用户所优选使用的通信能力。调用API或用群发助手,即可发送验证码、通知类和营销类短信;国内验证短信秒级触达,到达率最高可达99%;国际/港澳台短信覆盖200多个国家和地区,安全稳定,广受出海企业选用。
点击查看->>> 短信服务新用户 0元免费试用.