#!/usr/bin/env python3 # -*- coding: utf-8 -*- # author: bt3gl class Node: def __init__(self, value, next=None): self.value = value self.next = next class CircularQueue: def __init__(self, k: int): self.capacity = k self.count = 0 self.head = None self.tail = None def enqueue(self, value: int) -> bool: if self.count == self.capacity: return False if self.count == 0: self.head = Node(value) self.tail = self.head else: new_node = Node(value) self.tail.next = new_node self.tail = new_node self.count += 1 return True def dequeue(self) -> bool: if self.count == 0: return False self.head = self.head.next self.count -= 1 return True def front(self) -> int: if self.count == 0: return -1 return self.head.value def rear(self) -> int: if self.count == 0: return -1 return self.tail.value def is_empty(self) -> bool: return self.count == 0 def is_full(self) -> bool: return self.count == self.capacity