அல்கோரிதம்circular queue

Circular queue — ring buffer

TT
Testlaa Team
May 14, 20261 min read

Modulo wrap; full vs empty — size counter / 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 — physical end to logical.
  • Size — full check எளிது.
  • Kernel buffers.

Tags:

Stacks & queuesPythonமாணவர்கள்