未验证 提交 24731b07 编写于 作者: D Dylan Buchi 提交者: GitHub

[mypy] fix type annotations in `data_structures/queue/circular_queue_linked_list.py` (#5749)

* [mypy] fix type annotations in circular_queue_linked_list

* Remove 10 blank lines
Co-authored-by: NChristian Clauss <cclauss@me.com>
上级 3c8fec13
# Implementation of Circular Queue using linked lists
# https://en.wikipedia.org/wiki/Circular_buffer
from __future__ import annotations
from typing import Any
......@@ -18,8 +20,8 @@ class CircularQueueLinkedList:
"""
def __init__(self, initial_capacity: int = 6) -> None:
self.front = None
self.rear = None
self.front: Node | None = None
self.rear: Node | None = None
self.create_linked_list(initial_capacity)
def create_linked_list(self, initial_capacity: int) -> None:
......@@ -27,7 +29,7 @@ class CircularQueueLinkedList:
self.front = current_node
self.rear = current_node
previous_node = current_node
for i in range(1, initial_capacity):
for _ in range(1, initial_capacity):
current_node = Node()
previous_node.next = current_node
current_node.prev = previous_node
......@@ -49,9 +51,14 @@ class CircularQueueLinkedList:
>>> cq.is_empty()
True
"""
return self.front == self.rear and self.front.data is None
def first(self) -> Any:
return (
self.front == self.rear
and self.front is not None
and self.front.data is None
)
def first(self) -> Any | None:
"""
Returns the first element of the queue
>>> cq = CircularQueueLinkedList()
......@@ -74,7 +81,7 @@ class CircularQueueLinkedList:
'b'
"""
self.check_can_perform_operation()
return self.front.data
return self.front.data if self.front else None
def enqueue(self, data: Any) -> None:
"""
......@@ -92,11 +99,13 @@ class CircularQueueLinkedList:
...
Exception: Empty Queue
"""
if self.rear is None:
return
self.check_is_full()
if self.is_empty():
self.rear.data = data
else:
if not self.is_empty():
self.rear = self.rear.next
if self.rear:
self.rear.data = data
def dequeue(self) -> Any:
......@@ -117,6 +126,8 @@ class CircularQueueLinkedList:
Exception: Empty Queue
"""
self.check_can_perform_operation()
if self.rear is None or self.front is None:
return
if self.front == self.rear:
data = self.front.data
self.front.data = None
......@@ -133,15 +144,15 @@ class CircularQueueLinkedList:
raise Exception("Empty Queue")
def check_is_full(self) -> None:
if self.rear.next == self.front:
if self.rear and self.rear.next == self.front:
raise Exception("Full Queue")
class Node:
def __init__(self) -> None:
self.data = None
self.next = None
self.prev = None
self.data: Any | None = None
self.next: Node | None = None
self.prev: Node | None = None
if __name__ == "__main__":
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册