Answer to Question #296518 in C++ for Roe

Question #296518

Write a program that


Deletes duplicate elements from circular queue.



Requirements :


No global decelerations


Run test in main

1
Expert's answer
2022-02-12T04:34:22-0500


#include <iostream>


using namespace std;


class Queue
{
    int rear, front;


    int size;
    int* arr;


public:
    Queue(int s)
    {
        front = rear = -1;
        size = s;
        arr = new int[s];
    }


    void enQueue(int value);
    int deQueue();
    void displayQueue();
    void delete_dublicates();
};


void  Queue::delete_dublicates()
{
    int* tmp;
    for (int i = 0; i < size-1; i++)
    {
        for (int j = i+1; j < size; j++)
        {
            if (arr[i] == arr[j])
            {
                tmp = new int[size - 1];
                int count = 0;
                for (int z = 0; z < size; z++)
                {
                    if (z == j)
                    {
                        count++;
                        continue;
                    }
                    tmp[z - count] = arr[z];
                }
                delete[]arr;
                arr = tmp;
                size--;
                rear = size-1;
                front = 0;
            }
        }
    }
}




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) 
    {
        front = rear = 0;
        arr[rear] = value;
    }


    else if (rear == size - 1 && front != 0)
    {
        rear = 0;
        arr[rear] = value;
    }


    else
    {
        rear++;
        arr[rear] = value;
    }
}




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;
}




void Queue::displayQueue()
{
    std::cout << "\nsize : " << size<<"\t";
    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]);
    }
}




int main()
{
    Queue q(10);




    q.enQueue(14);
    q.enQueue(22);
    q.enQueue(22);
    q.enQueue(-6);
    q.enQueue(14);
    q.enQueue(-6);
    q.enQueue(14);
    q.enQueue(18);
    q.enQueue(44);
    q.enQueue(13);




    q.displayQueue();
    
    q.delete_dublicates();
    q.displayQueue();




    system("pause");
    return 0;
}

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