队列OJ题(一)

简介: ✅每日一练:622. 设计循环队列 - 力扣(LeetCode)

思想:顾名思义,要实现一个循环队列,我们需要设计一个环,用front来记录头位置,用rear来记录尾巴的位置,然后实现各种操作,重点就是,这里我们需要牺牲一个空间来判断当前队列是否为满, 当front==rear时,队列为空,当front==(rear+)%数组的长度时,队列为满,但是在书写的代码的时候,里面也有注意的细节问题,如图:

d34159cd86bd43ed8ad71f23dd1775f6.png

  • MyCircularQueue(k): 构造器,设置队列长度为 k 。
  • Front: 从队首获取元素。如果队列为空,返回 -1 。
  • Rear: 获取队尾元素。如果队列为空,返回 -1 。
  • enQueue(value): 向循环队列插入一个元素。如果成功插入则返回真。
  • deQueue(): 从循环队列中删除一个元素。如果成功删除则返回真。
  • isEmpty(): 检查循环队列是否为空。
  • isFull(): 检查循环队列是否已满。


classMyCircularQueue {
privateint[] elem;//创建一个数组privateintfront;//记录头的位置privateintrear;//记录尾巴的位置publicMyCircularQueue(intk) {
this.elem=newint[k+1];//这里我们牺牲了一个空间,所以这里要给数组加一个长度    }
publicbooleanenQueue(intvalue) {
if (isFull()) {
returnfalse;
        }
elem[rear] =value;
rear= (rear+1) %elem.length;
returntrue;
    }
publicbooleandeQueue() {
if (isEmpty()) {
returnfalse;
        }
front= (front+1) %elem.length;
returntrue;
    }
publicintFront() {
if (isEmpty()) {
return-1;
        }
returnelem[front];
    }
publicintRear() {
if (isEmpty()) {
return-1;
        }
intindex=(rear==0)?elem.length-1:rear-1;//这里需要处理一下,对尾巴的记录有2中情况returnelem[index];
    }
publicbooleanisEmpty() {
returnfront==rear;
    }
publicbooleanisFull() {
if ((rear+1) %elem.length==front) {
returntrue;
        } else {
returnfalse;
        }
    }
}
目录
相关文章
|
4月前
|
存储
leetcode:232. 用栈实现队列
leetcode:232. 用栈实现队列
30 0
|
10月前
Leetcode232.用栈实现队列
Leetcode232.用栈实现队列
31 0
LeetCode | 232. 用栈实现队列
LeetCode | 232. 用栈实现队列
|
4月前
|
Java C++ Python
leetcode-232:用栈实现队列
leetcode-232:用栈实现队列
33 0
|
4月前
|
Java C++
【剑指offer】-两个栈来实现一个队列-05/67
【剑指offer】-两个栈来实现一个队列-05/67
|
10月前
|
C语言
232.用栈实现队列(LeetCode)
232.用栈实现队列(LeetCode)
栈和队列OJ题:LeetCode--232.用栈实现队列
LeetCode--232.用栈实现队列:详细题解以及图解和完整代码。
55 0
栈和队列OJ题:LeetCode--225.用队列实现栈
LeetCode--225.用队列实现栈:详细题解以及图解和完整代码。
83 0
|
C语言
leetcode232. 用栈实现队列
leetcode232. 用栈实现队列
82 0
|
算法
LeetCode每日1题--用栈实现队列
LeetCode每日1题--用栈实现队列
75 0