I found an [tutorial on implementing a sequel using a circular array]( https://www.geeksforgeeks.org/implementation-deque-using-circular-array/). I changed the implementation and I am not sure if it is correct or not.
So I have one question
- I write code by using addCount to record has any add or not, but I can not sure is it correct? If not, please tell me error example.
class Deque { static final int MAX = 100; int arr[]; int front; int rear; int size; int addCount; public Deque(int size) { arr = new int[size]; front = 0; rear = 0; this.size = size; addCount = 0; } // Checks whether Deque is full or not. boolean isFull() { return front == rear && !isEmpty(); } // Checks whether Deque is empty or not. boolean isEmpty() { return front == rear && addCount == 0; } // Inserts an element at front void insertfront(int key) { if (isFull()) return; addCount++; arr[front] = key; front = front + 1; front %= this.size; } // function to inset element at rear end // of Deque. void insertrear(int key) { if (isFull()) return; addCount++; rear = (rear - 1) % this.size; arr[rear + this.size] = key; } // Deletes element at front end of Deque void deletefront() { if (isEmpty()) return; addCount--; front = (front - 1) % this.size; } // Delete element at rear end of Deque void deleterear() { if (isEmpty()) return; addCount--; rear = (rear + 1) % this.size; } // Returns front element of Deque int getFront() { int getFront = front-1; if (getFront < 0) getFront += this.size; return arr[getFront % this.size]; } // function return rear element of Deque int getRear() { int getRearIndex = rear + this.size; return arr[getRearIndex % this.size]; } // Driver program to test above function public static void main(String[] args) { Deque dq = new Deque(5); System.out.println("Insert element at rear end : 5 "); dq.insertrear(5); System.out.println("insert element at rear end : 10 "); dq.insertrear(10); System.out.println("get rear element : " + dq.getRear()); dq.deleterear(); System.out.println("After delete rear element new rear become : " + dq.getRear()); System.out.println("inserting element at front end"); dq.insertfront(15); System.out.println("get front element: " + dq.getFront()); dq.deletefront(); System.out.println("After delete front element new front become : " + +dq.getFront()); } }