Skip to content

Instantly share code, notes, and snippets.

@eduardogpg
Created June 27, 2023 21:16
Show Gist options
  • Save eduardogpg/ad4974ca8153c5ac69a3add9bb9b3bc2 to your computer and use it in GitHub Desktop.
Save eduardogpg/ad4974ca8153c5ac69a3add9bb9b3bc2 to your computer and use it in GitHub Desktop.
class QueueLLEmptyError(Exception):
pass
class Node:
def __init__(self, data):
self.data = data
self.next = None
class QueueLL:
def __init__(self):
self.front = None
self.rear = None
@property
def empty(self):
return self.front is None
def enqueue(self, item):
node = Node(item)
if self.empty:
self.front = node
else:
self.rear.next = node
self.rear = node
def dequeue(self):
if self.empty:
raise QueueLLEmptyError()
item = self.front.data
self.front = self.front.next
if self.front is None:
self.rear = None
return item
def peek(self):
if self.empty:
raise QueueLLEmptyError()
return self.front.data
def size(self):
count = 0
current = self.front
while current:
count += 1
current = current.next
return count
q = QueueLL()
q.enqueue(10)
q.enqueue(20)
q.enqueue(30)
q.enqueue(40)
q.enqueue(50)
print(q.dequeue())
print(q.dequeue())
print(q.dequeue())
print(q.dequeue())
print(q.dequeue())
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment