52 lines
1.3 KiB
Python
52 lines
1.3 KiB
Python
class Node:
|
|
next_node: "None | Node" = None
|
|
prev_node: "None | Node" = None
|
|
|
|
def __init__(self, value):
|
|
self.value = value
|
|
|
|
class Queue:
|
|
front: "Node | None" = None
|
|
back: "Node | None" = None
|
|
|
|
def append(self, value):
|
|
if self.back is None:
|
|
self.front = Node(value)
|
|
self.back = self.front
|
|
else:
|
|
new_node = Node(value)
|
|
self.back.prev_node = new_node
|
|
new_node.next_node = self.back
|
|
self.back = new_node
|
|
|
|
def popleft(self):
|
|
if self.front is not None:
|
|
prev_front = self.front
|
|
|
|
prev_node_in_queue = self.front.prev_node
|
|
self.front.next_node = None
|
|
self.front.prev_node = None
|
|
if prev_node_in_queue is not None:
|
|
prev_node_in_queue.next_node = None
|
|
|
|
self.front = prev_node_in_queue
|
|
|
|
return prev_front
|
|
else:
|
|
return None
|
|
|
|
def print_queue(self):
|
|
current_node = self.front
|
|
while current_node is not None:
|
|
print(current_node.value)
|
|
current_node = current_node.prev_node
|
|
|
|
|
|
queue = Queue()
|
|
queue.append("first")
|
|
queue.append("second")
|
|
queue.append("third")
|
|
queue.popleft()
|
|
queue.popleft()
|
|
queue.print_queue()
|