Algorithmscircular queue
Circular Queue — Ring Buffer
TT
Testlaa Team
May 14, 2026•1 min read
Indices wrap with modulo; distinguish full vs empty when head == tail using a size counter or wasted slot.
Try this in Python
class CircularQueue:
def __init__(self, k: int) -> None:
self.k = k
self.buf = [0] * k
self.head = 0
self.size = 0
def en_queue(self, v: int) -> bool:
if self.size == self.k:
return False
self.buf[(self.head + self.size) % self.k] = v
self.size += 1
return True
def de_queue(self) -> bool:
if self.size == 0:
return False
self.head = (self.head + 1) % self.k
self.size -= 1
return True
cq = CircularQueue(3)
print(cq.en_queue(1), cq.en_queue(2), cq.de_queue(), cq.en_queue(3))
Key takeaways
- Modulo ties physical end to logical continuation.
- Size simplifies full checks versus LeetCode-style
rearpointer tricks. - Hardware buffers and kernels use the same idea.
Tags:
Stacks & queuesPythonStudents
