Skip to content

Commit c4b3a42

Browse files
authored
Merge pull request keon#96 from AmineAfia/master
Corrected queue.py
2 parents 6b9f75d + f0f652f commit c4b3a42

1 file changed

Lines changed: 17 additions & 16 deletions

File tree

‎queue/queue.py‎

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -26,29 +26,31 @@ def __str__(self):
2626
result += str(element) + '\n'
2727
return result[:-1] + '\n------'
2828

29-
class ArrayQueue(AbstractStack):
29+
class ArrayQueue(AbstractQueue):
3030
def __init__(self, size=10):
3131
"""
3232
Initialize python List with size of 10 or user given input.
3333
Python List type is a dynamic array, so we have to restrict its
3434
dynamic nature to make it work like a static array.
3535
"""
36-
AbstractStack.__init__(self)
36+
AbstractQueue.__init__(self)
3737
self.array = [None] * size
3838
self.front = 0
3939
self.rear = 0
4040

4141
def enqueue(self, value):
42-
if self.top == len(self.array):
42+
if self.rear == len(self.array):
4343
self.expand()
44-
self.array[self.top] = value
44+
self.array[self.rear] = value
45+
self.rear += 1
4546
self.top += 1
4647

4748
def dequeue(self):
4849
if self.isEmpty():
49-
raise IndexError("stack is empty")
50-
value = self.array[self.top - 1]
51-
self.array[self.top - 1] = None
50+
raise IndexError("Queue is empty")
51+
value = self.array[self.front]
52+
self.array[self.front] = None
53+
self.front -= 1
5254
self.top -= 1
5355
return value
5456

@@ -63,7 +65,7 @@ def expand(self):
6365
self.array = new_array
6466

6567
def __iter__(self):
66-
probe = self.top - 1
68+
probe = self.rear
6769
while True:
6870
if probe < 0:
6971
raise StopIteration
@@ -75,40 +77,39 @@ def __init__(self, value):
7577
self.value = value
7678
self.next = None
7779

78-
class LinkedListQueue(AbstractStack):
80+
class LinkedListQueue(AbstractQueue):
7981
def __init__(self):
8082
AbstractQueue.__init__(self)
8183
self.front = None
8284
self.rear = None
8385

8486
def enqueue(self, value):
8587
node = QueueNode(value)
86-
if not front:
88+
if not self.front:
8789
self.front = node
8890
self.rear = node
89-
else:
90-
self.rear.next = node
91-
self.rear = node
91+
node.next = self.rear
92+
self.rear = node
9293
self.top += 1
9394

9495
def dequeue(self):
9596
if self.isEmpty():
9697
raise IndexError("Queue is empty")
9798
value = self.front.value
9899
if self.front is self.rear:
99-
self.rear = None
100+
self.front = None
100101
self.front = self.front.next
101102
self.top -= 1
102103
return value
103104

104105
def __iter__(self):
105-
probe = self.head
106+
probe = self.rear
106107
while True:
107108
if probe is None:
108109
raise StopIteration
109110
yield probe.value
110111
probe = probe.next
111112

112-
class HeapPriorityQueue(AbstractStack):
113+
class HeapPriorityQueue(AbstractQueue):
113114
def __init__(self):
114115
pass

0 commit comments

Comments
 (0)