Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -1807,7 +1807,7 @@ In order to achieve greater coverage and encourage more people to contribute to
</td>
</tr>
<tr>
<td>Dynamic Queue</td>
<td><a href="https://iq.opengenus.org/dynamic-queue/">Dynamic Queue</a></td>
<td> <!-- C -->
<a href="./src/c/FilaEncadeadaDinamica.c">
<img align="center" height="25" src="./logos/c.svg" />
Expand All @@ -1824,8 +1824,8 @@ In order to achieve greater coverage and encourage more people to contribute to
</a>
</td>
<td> <!-- Python -->
<a href="./CONTRIBUTING.md">
<img align="center" height="25" src="./logos/github.svg" />
<a href="./src/python/dynamic_queue.py">
<img align="center" height="25" src="./logos/python.svg" />
</a>
</td>
<td> <!-- Go -->
Expand Down
66 changes: 66 additions & 0 deletions src/python/dynamic_queue.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
class Node:
def __init__(self, key: int) -> None:
self.key = key
self.next = None


class DynamicQueue:
def __init__(self) -> None:
self.__begin = None
self.__end = None

def is_empty(self) -> bool:
return self.__begin is None

def enqueue(self, val: int) -> None:
node = Node(val)
if self.is_empty():
self.__begin = node
else:
self.__end.next = node
self.__end = node

def dequeue(self) -> Node | None:
if self.is_empty():
return None
node = self.__begin
self.__begin = self.__begin.next
if self.is_empty():
self.__end = None
return node

def show(self) -> None:
curr = self.__begin
while curr:
print(f"[{curr.key}]->", end="")
curr = curr.next
print()

def size(self) -> int:
size, curr = 0, self.__begin
while curr:
size += 1
curr = curr.next
return size


def main():
queue = DynamicQueue()
queue.enqueue(10)
queue.enqueue(15)
queue.enqueue(42)
queue.enqueue(70)
queue.show()
print("size: ", queue.size())
print()
queue.dequeue()
queue.show()
print("size: ", queue.size())
print()
queue.dequeue()
queue.show()
print("size: ", queue.size())


if __name__ == "__main__":
main()