Skip to content

Instantly share code, notes, and snippets.

@yosemitebandit
Created August 13, 2015 00:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save yosemitebandit/a585a301d24a73d0deb3 to your computer and use it in GitHub Desktop.
Save yosemitebandit/a585a301d24a73d0deb3 to your computer and use it in GitHub Desktop.
python FIFO queue
class Node(object):
def __init__(self, value):
self.value = value
self.next = None
def __repr__(self):
return 'Node %s' % self.value
class Queue(object):
"""A FIFO queue."""
def __init__(self):
self.length = 0
self.head = None
self.last = None
def __repr__(self):
result = ''
node = self.head
while node:
result += ' %s' % node
node = node.next
return result
def is_empty(self):
return self.length == 0
def add(self, value):
new_node = Node(value)
if self.length == 0:
self.head = new_node
self.last = new_node
else:
self.last.next = new_node
self.last = new_node
self.length += 1
def remove(self):
if not self.head:
return
value = self.head.value
self.head = self.head.next
self.length -= 1
return value
q = Queue()
q.add(2)
q.add(3)
q.add(4)
q.add(5)
print q
# Node 2 Node 3 Node 4 Node 5
print q.is_empty()
# False
q.remove()
print q
# Node 3 Node 4 Node 5
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment