Update Queues.java

This commit is contained in:
Libin Yang
2019-02-25 09:33:06 +08:00
committed by GitHub
parent c725d91ecf
commit 2b3e82fd4c

View File

@ -1,23 +1,32 @@
/** /**
* This implements Queues by using the class Queue. * This implements Queues by using the class Queue.
* * <p>
* A queue data structure functions the same as a real world queue. * A queue data structure functions the same as a real world queue.
* The elements that are added first are the first to be removed. * The elements that are added first are the first to be removed.
* New elements are added to the back/rear of the queue. * New elements are added to the back/rear of the queue.
* *
* @author Unknown * @author Unknown
*
*/ */
class Queue{ class Queue {
/** Max size of the queue */ /**
* Max size of the queue
*/
private int maxSize; private int maxSize;
/** The array representing the queue */ /**
* The array representing the queue
*/
private int[] queueArray; private int[] queueArray;
/** Front of the queue */ /**
* Front of the queue
*/
private int front; private int front;
/** Rear of the queue */ /**
* Rear of the queue
*/
private int rear; private int rear;
/** How many items are in the queue */ /**
* How many items are in the queue
*/
private int nItems; private int nItems;
/** /**
@ -25,7 +34,7 @@ class Queue{
* *
* @param size Size of the new queue * @param size Size of the new queue
*/ */
public Queue(int size){ public Queue(int size) {
maxSize = size; maxSize = size;
queueArray = new int[size]; queueArray = new int[size];
front = 0; front = 0;
@ -39,10 +48,10 @@ class Queue{
* @param x element to be added * @param x element to be added
* @return True if the element was added successfully * @return True if the element was added successfully
*/ */
public boolean insert(int x){ public boolean insert(int x) {
if(isFull()) if (isFull())
return false; return false;
if(rear == maxSize-1) //If the back of the queue is the end of the array wrap around to the front if (rear == maxSize - 1) // If the back of the queue is the end of the array wrap around to the front
rear = -1; rear = -1;
rear++; rear++;
queueArray[rear] = x; queueArray[rear] = x;
@ -55,14 +64,14 @@ class Queue{
* *
* @return the new front of the queue * @return the new front of the queue
*/ */
public int remove(){ //Remove an element from the front of the queue public int remove() { // Remove an element from the front of the queue
if(isEmpty()){ if (isEmpty()) {
System.out.println("Queue is empty"); System.out.println("Queue is empty");
return -1; return -1;
} }
int temp = queueArray[front]; int temp = queueArray[front];
front++; front++;
if(front == maxSize) //Dealing with wrap-around again if (front == maxSize) //Dealing with wrap-around again
front = 0; front = 0;
nItems--; nItems--;
return temp; return temp;
@ -73,7 +82,7 @@ class Queue{
* *
* @return element at the front of the queue * @return element at the front of the queue
*/ */
public int peekFront(){ public int peekFront() {
return queueArray[front]; return queueArray[front];
} }
@ -82,7 +91,7 @@ class Queue{
* *
* @return element at the rear of the queue * @return element at the rear of the queue
*/ */
public int peekRear(){ public int peekRear() {
return queueArray[rear]; return queueArray[rear];
} }
@ -91,8 +100,8 @@ class Queue{
* *
* @return true if the queue is empty * @return true if the queue is empty
*/ */
public boolean isEmpty(){ public boolean isEmpty() {
return(nItems == 0); return (nItems == 0);
} }
/** /**
@ -100,8 +109,8 @@ class Queue{
* *
* @return true if the queue is full * @return true if the queue is full
*/ */
public boolean isFull(){ public boolean isFull() {
return(nItems == maxSize); return (nItems == maxSize);
} }
/** /**
@ -109,7 +118,7 @@ class Queue{
* *
* @return number of elements in the queue * @return number of elements in the queue
*/ */
public int getSize(){ public int getSize() {
return nItems; return nItems;
} }
} }
@ -118,31 +127,30 @@ class Queue{
* This class is the example for the Queue class * This class is the example for the Queue class
* *
* @author Unknown * @author Unknown
*
*/ */
public class Queues{ public class Queues {
/** /**
* Main method * Main method
* *
* @param args Command line arguments * @param args Command line arguments
*/ */
public static void main(String args[]){ public static void main(String args[]) {
Queue myQueue = new Queue(4); Queue myQueue = new Queue(4);
myQueue.insert(10); myQueue.insert(10);
myQueue.insert(2); myQueue.insert(2);
myQueue.insert(5); myQueue.insert(5);
myQueue.insert(3); myQueue.insert(3);
//[10(front), 2, 5, 3(rear)] // [10(front), 2, 5, 3(rear)]
System.out.println(myQueue.isFull()); //Will print true System.out.println(myQueue.isFull()); // Will print true
myQueue.remove(); //Will make 2 the new front, making 10 no longer part of the queue myQueue.remove(); // Will make 2 the new front, making 10 no longer part of the queue
//[10, 2(front), 5, 3(rear)] // [10, 2(front), 5, 3(rear)]
myQueue.insert(7); //Insert 7 at the rear which will be index 0 because of wrap around myQueue.insert(7); // Insert 7 at the rear which will be index 0 because of wrap around
// [7(rear), 2(front), 5, 3] // [7(rear), 2(front), 5, 3]
System.out.println(myQueue.peekFront()); //Will print 2 System.out.println(myQueue.peekFront()); // Will print 2
System.out.println(myQueue.peekRear()); //Will print 7 System.out.println(myQueue.peekRear()); // Will print 7
} }
} }