from arrays import Array

class CircularArrayQueue(object):

    def __init__(self,size):
        self._items = Array(size)
        self._front=0
        self._rear=0
        self._logicalSize=0
        self._physicalSize=size

    def enqueue(self,item):
        if self._logicalSize==self._physicalSize:
            print "Array is full"
        else:
            self._items[self._rear]=item
            self._rear += 1
            if self._rear>=self._physicalSize:
                self._rear=0
            self._logicalSize += 1

    def dequeue(self):
        item=self._items[self._front]
        self._items[self._front]=None
        self._front +=1
        if self._front>=self._physicalSize:
                self._front=0
        self._logicalSize -= 1
        return item

    def peek(self):
        return self._items[self._front]

    def __len__(self):
        return self._logicalSize

    def isEmpty(self):
        return self._logicalSize==0

    
    
        
