Skip to content

Instantly share code, notes, and snippets.

@julien-c
Created February 28, 2014 19:34
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 julien-c/9278101 to your computer and use it in GitHub Desktop.
Save julien-c/9278101 to your computer and use it in GitHub Desktop.
Queue
class Queue:
def __init__(self):
self.stacks = ([], [])
self.reversed = False
def _reverse(self):
i, j = (0, 1) if self.reversed else (1, 0)
while len(self.stacks[i]):
self.stacks[i].pop()
while len(self.stacks[j]):
self.stacks[i].append(self.stacks[j].pop())
self.reversed = not self.reversed
def enqueue(self, item):
if self.reversed:
self._reverse()
self.stacks[0].append(item)
def dequeue(self):
if self.reversed is False:
self._reverse()
return self.stacks[1].pop()
q = Queue()
q.enqueue(1)
q.enqueue(2)
q.enqueue(3)
print q.dequeue()
print q.dequeue()
q.enqueue(4)
print q.dequeue()
print q.dequeue()
# Should print 1,2,3,4
@arthurdarcet
Copy link

You could use [1, 2, 3][::-1] == [3, 2, 1] or list.reverse()

and did you check http://docs.python.org/2/library/collections.html#collections.deque ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment