notes an implementation of the circular queue is shown belowstruct cqueue data[ ]int frontrearvoid insert(queue [] /this procedure inserts an element into the queue * rear ( rear nif( rear = frontprintf("queue full")else data[ rearxvoid delete(queue qt /deletes an element stores it in *if( front = rearprintf("queue empty")else data[ front] front =( frontlnboolean empty(queue []/this function checks if the queue is empty or not *if( front = rearreturn(true)else return(false)void initialize(queue []/this procedure initializes queue front rear in this implementationwe are using only - entries of the 'elementsarray to use all the elementsa special flag has to be maintained to distinguish between the queue_full and queue_ empty situations lovely professional university