#include<iostream>using namespace std;// Maximum size of array or Dequeue#define MAX 100// A structure to represent a Dequeclass Deque{ int arr[MAX]; int front; int rear; int size;public : Deque(int size) { front = -1; rear = 0; this->size = size; } // Operations on Deque: void insertfront(int key); void insertrear(int key); void deletefront(); void deleterear(); bool isFull(); bool isEmpty(); int getFront(); int getRear();};// Checks whether Deque is full or not.bool Deque::isFull(){ return ((front == 0 && rear == size-1)|| front == rear+1);}// Checks whether Deque is empty or not.bool Deque::isEmpty (){ return (front == -1);}// Inserts an element at frontvoid Deque::insertfront(int key){ // check whether Deque if full or not if (isFull()) { cout << "Overflow\n" << endl; return; } // If queue is initially empty if (front == -1) { front = 0; rear = 0; } // front is at first position of queue else if (front == 0) front = size - 1 ; else // decrement front end by '1' front = front-1; // insert current element into Deque arr[front] = key ;}// function to inset element at rear end// of Deque.void Deque ::insertrear(int key){ if (isFull()) { cout << " Overflow\n " << endl; return; } // If queue is initially empty if (front == -1) { front = 0; rear = 0; } // rear is at last position of queue else if (rear == size-1) rear = 0; // increment rear end by '1' else rear = rear+1; // insert current element into Deque arr[rear] = key ;}// Deletes element at front end of Dequevoid Deque ::deletefront(){ // check whether Deque is empty or not if (isEmpty()) { cout << "Queue Underflow\n" << endl; return ; } // Deque has only one element if (front == rear) { front = -1; rear = -1; } else // back to initial position if (front == size -1) front = 0; else // increment front by '1' to remove current // front value from Deque front = front+1;}// Delete element at rear end of Dequevoid Deque::deleterear(){ if (isEmpty()) { cout << " Underflow\n" << endl ; return ; } // Deque has only one element if (front == rear) { front = -1; rear = -1; } else if (rear == 0) rear = size-1; else rear = rear-1;}// Returns front element of Dequeint Deque::getFront(){ // check whether Deque is empty or not if (isEmpty()) { cout << " Underflow\n" << endl; return -1 ; } return arr[front];}// function return rear element of Dequeint Deque::getRear(){ // check whether Deque is empty or not if(isEmpty() || rear < 0) { cout << " Underflow\n" << endl; return -1 ; } return arr[rear];}// Driver program to test above functionint 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 << "get rear element " << " " << dq.getRear() << endl; dq.deleterear(); cout << "After delete rear element new rear" << " become " << dq.getRear() << endl; cout << "insert element at front end \n"; dq.insertfront(15); cout << "get front element " << " " << dq.getFront() << endl; dq.deletefront(); cout << "After delete front element new " << "front become " << dq.getFront() << endl; return 0;}insert element at rear end : 5 insert element at rear end : 10 get rear element : 10 After delete rear element new rear become : 5 insert element at front end : 15 get front element : 15 After delete front element new front become : 5
No comments:
Post a Comment