Skip to content

Instantly share code, notes, and snippets.

@pepasflo
Created January 31, 2019 16:46
Show Gist options
  • Save pepasflo/0cca675c902cb2caca4cc26d446e5909 to your computer and use it in GitHub Desktop.
Save pepasflo/0cca675c902cb2caca4cc26d446e5909 to your computer and use it in GitHub Desktop.
A trivial queue data structure, written in Python.
#!/usr/bin/env python
class LinkedListNode(object):
def __init__(self, value, next=None):
self.value = value
self.next = None
class Queue(object):
def __init__(self):
self.head = None
self.tail = None
def enqueue(self, value):
if self.head is None:
self.head = LinkedListNode(value)
self.tail = self.head
else:
self.tail.next = LinkedListNode(value)
def dequeue(self):
if self.head is None:
return None
node = self.head
self.head = self.head.next
if self.head is None:
self.tail = None
return node.value
def test0():
q = Queue()
assert q.dequeue() == None
def test1():
q = Queue()
q.enqueue(1)
assert q.dequeue() == 1
assert q.dequeue() == None
def test2():
q = Queue()
q.enqueue(1)
q.enqueue(2)
assert q.dequeue() == 1
assert q.dequeue() == 2
assert q.dequeue() == None
def test3():
q = Queue()
q.enqueue(1)
assert q.dequeue() == 1
q.enqueue(2)
assert q.dequeue() == 2
assert q.dequeue() == None
if __name__ == "__main__":
test0()
test1()
test2()
test3()
print "all tests passed."
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment