mirror of
https://github.com/heqin-zhu/algorithm.git
synced 2024-03-22 13:30:46 +08:00
77 lines
1.9 KiB
Python
77 lines
1.9 KiB
Python
|
class MyCircularQueue:
|
||
|
|
||
|
def __init__(self, k):
|
||
|
"""
|
||
|
Initialize your data structure here. Set the size of the queue to be k.
|
||
|
:type k: int
|
||
|
"""
|
||
|
self.size = k+1
|
||
|
self.data = [0]*self.size
|
||
|
self.head = self.rear = 0
|
||
|
|
||
|
def enQueue(self, value):
|
||
|
"""
|
||
|
Insert an element into the circular queue. Return true if the operation is successful.
|
||
|
:type value: int
|
||
|
:rtype: bool
|
||
|
"""
|
||
|
if self.isFull():
|
||
|
return False
|
||
|
self.data[self.rear] = value
|
||
|
self.rear = (self.rear+1)%self.size
|
||
|
return True
|
||
|
def deQueue(self):
|
||
|
"""
|
||
|
Delete an element from the circular queue. Return true if the operation is successful.
|
||
|
:rtype: bool
|
||
|
"""
|
||
|
if self.isEmpty():
|
||
|
return False
|
||
|
self.head = (self.head+1)%self.size
|
||
|
return True
|
||
|
|
||
|
def Front(self):
|
||
|
"""
|
||
|
Get the front item from the queue.
|
||
|
:rtype: int
|
||
|
"""
|
||
|
if self.isEmpty():
|
||
|
return -1
|
||
|
return self.data[self.head]
|
||
|
|
||
|
|
||
|
def Rear(self):
|
||
|
"""
|
||
|
Get the last item from the queue.
|
||
|
:rtype: int
|
||
|
"""
|
||
|
if self.isEmpty():
|
||
|
return -1
|
||
|
return self.data[(self.rear-1)%self.size]
|
||
|
|
||
|
def isEmpty(self):
|
||
|
"""
|
||
|
Checks whether the circular queue is empty or not.
|
||
|
:rtype: bool
|
||
|
"""
|
||
|
return self.head ==self.rear
|
||
|
|
||
|
|
||
|
def isFull(self):
|
||
|
"""
|
||
|
Checks whether the circular queue is full or not.
|
||
|
:rtype: bool
|
||
|
"""
|
||
|
return (self.head - self.rear)%self.size ==1
|
||
|
|
||
|
|
||
|
|
||
|
# Your MyCircularQueue object will be instantiated and called as such:
|
||
|
# obj = MyCircularQueue(k)
|
||
|
# param_1 = obj.enQueue(value)
|
||
|
# param_2 = obj.deQueue()
|
||
|
# param_3 = obj.Front()
|
||
|
# param_4 = obj.Rear()
|
||
|
# param_5 = obj.isEmpty()
|
||
|
# param_6 = obj.isFull()
|