Answer to Question #247739 in C++ for Mr Roy

Question #247739

1.Create a class to implement a queue using a circular array


a.The class should contain functions to

i.Insert a new value,

ii.Delete a value.

iii.Change a value equal to X to a value equal to Y.

iv.Count all value equal to X in the queue.

b.For each function above perform an asymptotic analysis and state the worst case performance of the algorithm


1
Expert's answer
2021-10-06T16:08:51-0400
class Queue
{
    // Initialize front and rear
    int rear, front;
    // Circular Queue
    int size;
    int *arr;
    Queue(int s)
    {
       front = rear = -1;
       size = s;
       arr = new int[s];
    }
    void enQueue(int value);
    int deQueue();
    void displayQueue();
};
/* Function to create Circular queue */
void Queue::enQueue(int value)
{
    if ((front == 0 && rear == size-1) ||
            (rear == (front-1)%(size-1)))
    {
        printf("\nQueue is Full");
        return;
    }
    else if (front == -1) /* Insert First Element */
    {
        front = rear = 0;
        arr[rear] = value;
    }
    else if (rear == size-1 && front != 0)
    {
        rear = 0;
        arr[rear] = value;
    }
    else
    {
        rear++;
        arr[rear] = value;
    }
}
// Function to delete element from Circular Queue
int Queue::deQueue()
{
    if (front == -1)
    {
        printf("\nQueue is Empty");
        return INT_MIN;
    }
    int data = arr[front];
    arr[front] = -1;
    if (front == rear)
    {
        front = -1;
        rear = -1;
    }
    else if (front == size-1)
        front = 0;
    else
        front++;
    return data;
}
// Function displaying the elements
// of Circular Queue
void Queue::displayQueue()
{
    if (front == -1)
    {
        printf("\nQueue is Empty");
        return;
    }
    printf("\nElements in Circular Queue are: ");
    if (rear >= front)
    {
        for (int i = front; i <= rear; i++)
            printf("%d ",arr[i]);
    }
    else
    {
        for (int i = front; i < size; i++)
            printf("%d ", arr[i]);
        for (int i = 0; i <= rear; i++)
            printf("%d ", arr[i]);
    }
} 

Need a fast expert's response?

Submit order

and get a quick answer at the best price

for any assignment or question with DETAILED EXPLANATIONS!

Comments

No comments. Be the first!

Leave a comment

LATEST TUTORIALS
New on Blog
APPROVED BY CLIENTS