diff --git a/data_structures/QueueOnList.py b/data_structures/Queue/QueueOnList.py similarity index 69% rename from data_structures/QueueOnList.py rename to data_structures/Queue/QueueOnList.py index c6c01f7c0..3e1c79be1 100644 --- a/data_structures/QueueOnList.py +++ b/data_structures/Queue/QueueOnList.py @@ -4,13 +4,17 @@ class Queue(): self.entries = [] self.length = 0 + def __str__(self): + printed = '<' + str(self.entries)[1:-1] + '>' + return printed + """Enqueues {@code item} @param item item to enqueue""" def put(self, item): self.entries.append(item) self.length = self.length + 1 - print(self.entries) + """Dequeues {@code item} @requirement: |self.length| > 0 @@ -22,6 +26,13 @@ class Queue(): self.entries = self.entries[1:] return dequeued + """Rotates the queue {@code rotation} times + @param rotation + number of times to rotate queue""" + def rotate(self, rotation): + for i in range(rotation): + self.put(self.get()) + """Enqueues {@code item} @return item at front of self.entries""" def front(self): @@ -30,6 +41,3 @@ class Queue(): """Returns the length of this.entries""" def size(self): return self.length - - - diff --git a/data_structures/Queue/QueueOnPseudoStack.py b/data_structures/Queue/QueueOnPseudoStack.py new file mode 100644 index 000000000..b69fbcc98 --- /dev/null +++ b/data_structures/Queue/QueueOnPseudoStack.py @@ -0,0 +1,50 @@ +"""Queue represented by a pseudo stack (represented by a list with pop and append)""" +class Queue(): + def __init__(self): + self.stack = [] + self.length = 0 + + def __str__(self): + printed = '<' + str(self.stack)[1:-1] + '>' + return printed + + """Enqueues {@code item} + @param item + item to enqueue""" + def put(self, item): + self.stack.append(item) + self.length = self.length + 1 + + """Dequeues {@code item} + @requirement: |self.length| > 0 + @return dequeued + item that was dequeued""" + def get(self): + self.rotate(1) + dequeued = self.stack[self.length-1] + self.stack = self.stack[:-1] + self.rotate(self.length-1) + self.length = self.length -1 + return dequeued + + """Rotates the queue {@code rotation} times + @param rotation + number of times to rotate queue""" + def rotate(self, rotation): + for i in range(rotation): + temp = self.stack[0] + self.stack = self.stack[1:] + self.put(temp) + self.length = self.length - 1 + + """Reports item at the front of self + @return item at front of self.stack""" + def front(self): + front = self.get() + self.put(front) + self.rotate(self.length-1) + return front + + """Returns the length of this.stack""" + def size(self): + return self.length diff --git a/data_structures/Queue/__init__.py b/data_structures/Queue/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/data_structures/__init__.py b/data_structures/__init__.py new file mode 100644 index 000000000..e69de29bb