当前位置:网站首页>如何设计循环队列?快进来学习~
如何设计循环队列?快进来学习~
2022-08-01 23:58:00 【陈亦康】

分析:
两种解题思路,一种是计数法,还有一种是浪费空间法,为什么这么说呢,看下图:



解法一:
class MyCircularQueue {
public int[] array;
private int front;
private int rear;
private int usedSize;
public MyCircularQueue(int k) {
array = new int[k];
}
//插入数据
public boolean enQueue(int value) {
if(isFull()){
return false;
}
else{
array[rear] = value;
//不可以单纯的rear++;会溢出,就不是循环了
rear = (rear + 1) % array.length;
usedSize++;
return true;
}
}
//删除元素
public boolean deQueue() {
if(isEmpty()){
return false;
}
front = (front + 1) % array.length;
usedSize--;
return true;
}
//获取首元素
public int Front() {
if(isEmpty()){
return -1;
}
return array[front];
}
//获取尾元素
public int Rear() {
if(isEmpty()){
return -1;
}
return rear == 0 ? array[array.length - 1] : array[rear - 1];
}
//检查是否为空
public boolean isEmpty() {
if(usedSize == 0){
return true;
}
return false;
}
//是否为满
public boolean isFull() {
return usedSize == array.length;
}
}解法二:
class MyCircularQueue {
public int[] array;
private int front;
private int rear;
public MyCircularQueue(int k) {
array = new int[k + 1];
}
//插入数据
public boolean enQueue(int value) {
if(isFull()){
return false;
}
else{
array[rear] = value;
//不可以单纯的rear++;会溢出,就不是循环了
rear = (rear + 1) % array.length;
return true;
}
}
//删除元素
public boolean deQueue() {
if(isEmpty()){
return false;
}
front = (front + 1) % array.length;
return true;
}
//获取首元素
public int Front() {
if(isEmpty()){
return -1;
}
return array[front];
}
//获取尾元素
public int Rear() {
if(isEmpty()){
return -1;
}
return rear == 0 ? array[array.length - 1] : array[rear - 1];
}
//检查是否为空
public boolean isEmpty() {
if(rear == front){
return true;
}
return false;
}
//是否为满
public boolean isFull() {
return (rear + 1) % array.length == front;
}
}边栏推荐
猜你喜欢
随机推荐
SphereEx苗立尧:云原生架构下的Database Mesh研发实践
Axure教程-新手入门基础(小白强烈推荐!!!)
2022 6th Strong Net Cup Part WP
FAST-LIO2代码解析(二)
学习笔记:机器学习之回归
How to reinstall Win11?One-click method to reinstall Win11
ansible模块--copy模块
UI自动化测试框架搭建-标记性能较差用例
企业防护墙管理,有什么防火墙管理工具?
类型“FC<Props>”的参数不能赋给类型“ForwardRefRenderFunction<unknown, Props>”的参数。 属性“defaultProps”的类型不兼容。 不
零基础如何学习单片机,一位入门者的进阶路径,可参考
洞见云原生微服务及微服务架构浅析
solidity
使用Jenkins做持续集成,这个知识点必须要掌握
12306抢票,极限并发带来的思考?
在MySQL登录时出现Access denied for user ‘root‘@‘localhost‘ (using password YES) 拒绝访问问题解决
Chrome书签插件,让你实现高效整理
【MySQL系列】 MySQL表的增删改查(进阶)
很多人喜欢用多御安全浏览器,竟是因为这些原因
Enterprise firewall management, what firewall management tools are there?









