同步操作将从 编程语言算法集/Python 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
""" A Queue using a linked list like structure """from __future__ import annotationsfrom collections.abc import Iteratorfrom typing import Anyclass Node:def __init__(self, data: Any) -> None:self.data: Any = dataself.next: Node | None = Nonedef __str__(self) -> str:return f"{self.data}"class LinkedQueue:""">>> queue = LinkedQueue()>>> queue.is_empty()True>>> queue.put(5)>>> queue.put(9)>>> queue.put('python')>>> queue.is_empty()False>>> queue.get()5>>> queue.put('algorithms')>>> queue.get()9>>> queue.get()'python'>>> queue.get()'algorithms'>>> queue.is_empty()True>>> queue.get()Traceback (most recent call last):...IndexError: dequeue from empty queue"""def __init__(self) -> None:self.front: Node | None = Noneself.rear: Node | None = Nonedef __iter__(self) -> Iterator[Any]:node = self.frontwhile node:yield node.datanode = node.nextdef __len__(self) -> int:""">>> queue = LinkedQueue()>>> for i in range(1, 6):... queue.put(i)>>> len(queue)5>>> for i in range(1, 6):... assert len(queue) == 6 - i... _ = queue.get()>>> len(queue)0"""return len(tuple(iter(self)))def __str__(self) -> str:""">>> queue = LinkedQueue()>>> for i in range(1, 4):... queue.put(i)>>> queue.put("Python")>>> queue.put(3.14)>>> queue.put(True)>>> str(queue)'1 <- 2 <- 3 <- Python <- 3.14 <- True'"""return " <- ".join(str(item) for item in self)def is_empty(self) -> bool:""">>> queue = LinkedQueue()>>> queue.is_empty()True>>> for i in range(1, 6):... queue.put(i)>>> queue.is_empty()False"""return len(self) == 0def put(self, item: Any) -> None:""">>> queue = LinkedQueue()>>> queue.get()Traceback (most recent call last):...IndexError: dequeue from empty queue>>> for i in range(1, 6):... queue.put(i)>>> str(queue)'1 <- 2 <- 3 <- 4 <- 5'"""node = Node(item)if self.is_empty():self.front = self.rear = nodeelse:assert isinstance(self.rear, Node)self.rear.next = nodeself.rear = nodedef get(self) -> Any:""">>> queue = LinkedQueue()>>> queue.get()Traceback (most recent call last):...IndexError: dequeue from empty queue>>> queue = LinkedQueue()>>> for i in range(1, 6):... queue.put(i)>>> for i in range(1, 6):... assert queue.get() == i>>> len(queue)0"""if self.is_empty():raise IndexError("dequeue from empty queue")assert isinstance(self.front, Node)node = self.frontself.front = self.front.nextif self.front is None:self.rear = Nonereturn node.datadef clear(self) -> None:""">>> queue = LinkedQueue()>>> for i in range(1, 6):... queue.put(i)>>> queue.clear()>>> len(queue)0>>> str(queue)''"""self.front = self.rear = Noneif __name__ == "__main__":from doctest import testmodtestmod()
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。