Queue
code: python
from typing import List, Any, Optional
class Queue:
def __init__(self) -> None:
# O(1), O(1)
def enqueue(self, item: Any) -> None:
self.items.append(item)
# O(n), O(1)
def dequeue(self) -> OptionalAny: if not self.is_empty():
return self.items.pop(0)
return None
# O(1), O(1)
def is_empty(self) -> bool:
return len(self.items) == 0
# O(1), O(1)
def size(self) -> int:
return len(self.items)
def test_enqueue_and_dequeue():
queue = Queue()
queue.enqueue(1)
queue.enqueue(2)
queue.enqueue(3)
assert queue.dequeue() == 1
assert queue.dequeue() == 2
assert queue.dequeue() == 3
assert queue.dequeue() is None
def test_is_empty():
queue = Queue()
assert queue.is_empty()
queue.enqueue(1)
assert not queue.is_empty()
queue.dequeue()
assert queue.is_empty()
def test_size():
queue = Queue()
assert queue.size() == 0
queue.enqueue(1)
queue.enqueue(2)
assert queue.size() == 2
queue.dequeue()
assert queue.size() == 1