JavaAlgorithms/data_structures/Queues.java
2016-11-21 22:13:34 +00:00

86 lines
2.1 KiB
Java

/*
* A queue data structure functions the same as a real world queue.
* The elements that are added first are the first to be removed.
* New elements are added to the back/rear of the queue.
*/
class Queue{
private int maxSize;
private int[] queueArray;
private int front;
private int rear;
private int nItems;
public Queue(int size){ //Constructor
maxSize = size;
queueArray = new int[size];
front = 0;
rear = -1;
nItems = 0;
}
public boolean insert(int x){ //Inserts an element at the rear of the queue
if(isFull())
return false;
if(rear == maxSize-1) //If the back of the queue is the end of the array wrap around to the front
rear = -1;
rear++;
queueArray[rear] = x;
nItems++;
return true;
}
public int remove(){ //Remove an element from the front of the queue
if(isEmpty()){
System.out.println("Queue is empty");
return -1;
}
int temp = queueArray[front];
front++;
if(front == maxSize) //Dealing with wrap-around again
front = 0;
nItems--;
return temp;
}
public int peekFront(){ //Checks what's at the front of the queue
return queueArray[front];
}
public int peekRear(){ //Checks what's at the rear of the queue
return queueArray[rear];
}
public boolean isEmpty(){ //Returns true is the queue is empty
return(nItems == 0);
}
public boolean isFull(){ //Returns true is the queue is full
return(nItems == maxSize);
}
public int getSize(){ //Returns the number of elements in the queue
return nItems;
}
}
//Example
public class Queues{
public static void main(String args[]){
Queue myQueue = new Queue(4);
myQueue.insert(10);
myQueue.insert(2);
myQueue.insert(5);
myQueue.insert(3);
//[10(front), 2, 5, 3(rear)]
System.out.println(myQueue.isFull()); //Will print true
myQueue.remove(); //Will make 2 the new front, making 10 no longer part of the queue
//[10, 2(front), 5, 3(rear)]
myQueue.insert(7); //Insert 7 at the rear which will be index 0 because of wrap around
// [7(rear), 2(front), 5, 3]
System.out.println(myQueue.peekFront()); //Will print 2
System.out.println(myQueue.peekRear()); //Will print 7
}
}