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