# Queue.py
# Mechanical MOOC MIT OCW 6.189 Exercise 3.6
# List implementation of a Queue
# Glenn A. Richard
# August 2, 2013
class Queue(object):
def __init__(self):
# Initialize the Queue to empty
self.items = []
def insert(self, item):
# Append the item to the back of the Queue
self.items.append(item)
def remove(self):
if len(self.items) == 0:
# The Queue had no items in it
return "The Queue is empty"
else:
# The Queue was not empty; remove and return the item at the front
return self.items.pop(0)
queue = Queue()
queue.insert(5)
queue.insert(6)
print queue.remove()
# 5
queue.insert(7)
print queue.remove()
# 6
print queue.remove()
# 7
print queue.remove()
# The queue is empty
IyBRdWV1ZS5weQojIE1lY2hhbmljYWwgTU9PQyBNSVQgT0NXIDYuMTg5IEV4ZXJjaXNlIDMuNgojIExpc3QgaW1wbGVtZW50YXRpb24gb2YgYSBRdWV1ZQojIEdsZW5uIEEuIFJpY2hhcmQKIyBBdWd1c3QgMiwgMjAxMwpjbGFzcyBRdWV1ZShvYmplY3QpOgogICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgICMgSW5pdGlhbGl6ZSB0aGUgUXVldWUgdG8gZW1wdHkKICAgICAgICBzZWxmLml0ZW1zID0gW10KICAgIGRlZiBpbnNlcnQoc2VsZiwgaXRlbSk6CiAgICAgICAgIyBBcHBlbmQgdGhlIGl0ZW0gdG8gdGhlIGJhY2sgb2YgdGhlIFF1ZXVlCiAgICAgICAgc2VsZi5pdGVtcy5hcHBlbmQoaXRlbSkKICAgIGRlZiByZW1vdmUoc2VsZik6CiAgICAgICAgaWYgbGVuKHNlbGYuaXRlbXMpID09IDA6CiAgICAgICAgICAgICMgVGhlIFF1ZXVlIGhhZCBubyBpdGVtcyBpbiBpdAogICAgICAgICAgICByZXR1cm4gIlRoZSBRdWV1ZSBpcyBlbXB0eSIKICAgICAgICBlbHNlOgogICAgICAgICAgICAjIFRoZSBRdWV1ZSB3YXMgbm90IGVtcHR5OyByZW1vdmUgYW5kIHJldHVybiB0aGUgaXRlbSBhdCB0aGUgZnJvbnQKICAgICAgICAgICAgcmV0dXJuIHNlbGYuaXRlbXMucG9wKDApCgpxdWV1ZSA9IFF1ZXVlKCkKcXVldWUuaW5zZXJ0KDUpCnF1ZXVlLmluc2VydCg2KQpwcmludCBxdWV1ZS5yZW1vdmUoKQojIDUKcXVldWUuaW5zZXJ0KDcpCnByaW50IHF1ZXVlLnJlbW92ZSgpCiMgNgpwcmludCBxdWV1ZS5yZW1vdmUoKQojIDcKcHJpbnQgcXVldWUucmVtb3ZlKCkKIyBUaGUgcXVldWUgaXMgZW1wdHkK