Input Restricted Queue – GeeksforGeeks

  

#include <iostream>

using namespace std;

  

#define MAX 100

  

class Deque {

    int arr[MAX];

    int front;

    int rear;

    int size;

  

public:

    Deque(int size)

    {

        front = -1;

        rear = 0;

        this->size = size;

    }

  

    

    

    void insertrear(int key);

    void deletefront();

    void deleterear();

    bool isFull();

    bool isEmpty();

    int getFront();

    int getRear();

};

  

bool Deque::isFull()

{

    return ((front == 0 && rear == size - 1)

            || front == rear + 1);

}

  

bool Deque::isEmpty() { return (front == -1); }

  

void Deque::insertrear(int key)

{

    if (isFull()) {

        cout << " Overflow\n " << endl;

        return;

    }

  

    

    if (front == -1) {

        front = 0;

        rear = 0;

    }

  

    

    else if (rear == size - 1)

        rear = 0;

  

    

    else

        rear = rear + 1;

  

    

    arr[rear] = key;

}

  

void Deque::deletefront()

{

  

    

    

    if (isEmpty()) {

        cout << "Queue Underflow\n"

             << endl;

        return;

    }

  

    

    if (front == rear) {

        front = -1;

        rear = -1;

    }

    else

  

        

        if (front == size - 1)

        front = 0;

  

    else

  

        

        

        front = front + 1;

}

  

void Deque::deleterear()

{

    if (isEmpty()) {

        cout << " Underflow\n"

             << endl;

        return;

    }

  

    

    if (front == rear) {

        front = -1;

        rear = -1;

    }

    else if (rear == 0)

        rear = size - 1;

    else

        rear = rear - 1;

}

  

int Deque::getFront()

{

  

    

    

    if (isEmpty()) {

        cout << " Underflow\n"

             << endl;

        return -1;

    }

    return arr[front];

}

  

int Deque::getRear()

{

  

    

    

    if (isEmpty() || rear < 0) {

        cout << " Underflow\n"

             << endl;

        return -1;

    }

    return arr[rear];

}

  

int main()

{

    Deque dq(5);

  

    

    cout << "Insert element at rear end : 5 \n";

    dq.insertrear(5);

  

    cout << "insert element at rear end : 10 \n";

    dq.insertrear(10);

  

    cout << "insert element at rear end : 15 \n";

    dq.insertrear(15);

  

    cout << "Get rear element : "

         << " " << dq.getRear() << endl;

  

    dq.deleterear();

    cout << "After delete rear element new rear"

         << " become : " << dq.getRear() << endl;

  

    cout << "Get front element : " << dq.getFront() << endl;

  

    dq.deletefront();

  

    cout << "After delete front element new "

         << "front become : " << dq.getFront() << endl;

    return 0;

}

Like this post? Please share to your friends:
Leave a Reply

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: