class QueueList: '''Queue implemented with list''' def __init__(self): self._content = [] def enqueue(self, item): self._content.append(item) def dequeue(self): return self._content.pop(0) def is_empty(self): return self._content == [] class QueueTail: '''Queue implemented with list with tail at 0''' def __init__(self): self._content = [] def enqueue(self, item): self._content.insert(0, item) def dequeue(self): return self._content.pop(-1) def is_empty(self): return self._content == [] class QueueDict: '''Queue implemented with dictionary''' def __init__(self): self._content = {} self._curr = 0 self._pop_location = -1 def enqueue(self, item): self._content[self._curr] = item self._curr += 1 def dequeue(self): self._pop_location += 1 return self._content[self._pop_location] def is_empty(self): return self._curr - 1 == self._pop_location class QueueStr: '''Queue implemented with string''' def __init__(self): self._content = "" def enqueue(self, item): self._content += item + "|" def dequeue(self): location = self._content.find("|") holder = self._content[:location] self._content = self._content[location+1:] return holder def is_empty(self): return self._content == ""