-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy patharrayqueue.py
52 lines (44 loc) · 1.44 KB
/
arrayqueue.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# Implementation of the Queue ADT using a circular array.
from myarray import myArray
class Queue:
# Creates an empty queue.
def __init__( self, maxSize ):
self._count = 0
self._front = 0
self._back = maxSize - 1
self._qArray = myArray( maxSize )
# Returns True if the queue is empty
def isEmpty( self ):
return self._count == 0
# Returns True if the queue is full.
def isFull( self ):
return self._count == len( self._qArray )
# Returns the number of items in the queue.
def __len__( self ):
return self._count
# Adds the given item to the queue.
def enqueue( self, item ):
assert not self.isFull(), "Cannot enqueue to a full queue."
maxSize = len( self._qArray )
self._back = ( self._back + 1 ) % maxSize
self._qArray[ self._back ] = item
self._count += 1
# Removes and returns the first item in the queue.
def dequeue( self ):
assert not self.isEmpty(), "Cannot dequeue from an empty queue."
item = self._qArray[ self._front ]
maxSize = len( self._qArray )
self._front = ( self._front + 1 ) % maxSize
self._count -= 1
return item
if __name__ == '__main__':
Q = Queue( 5 )
Q.enqueue( 28 )
Q.enqueue( 19 )
Q.enqueue( 45 )
Q.enqueue( 13 )
Q.enqueue( 7 )
for i in range( len(Q) ):
cur_item = Q.dequeue()
print cur_item,
print ''