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
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,148 +1,156 @@
/** /**
* 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 */ /**
private int maxSize; * Max size of the queue
/** The array representing the queue */ */
private int[] queueArray; private int maxSize;
/** Front of the queue */ /**
private int front; * The array representing the queue
/** Rear of the queue */ */
private int rear; private int[] queueArray;
/** How many items are in the queue */ /**
private int nItems; * Front of the queue
*/
/** private int front;
* Constructor /**
* * Rear of the queue
* @param size Size of the new queue */
*/ private int rear;
public Queue(int size){ /**
maxSize = size; * How many items are in the queue
queueArray = new int[size]; */
front = 0; private int nItems;
rear = -1;
nItems = 0; /**
} * Constructor
*
/** * @param size Size of the new queue
* Inserts an element at the rear of the queue */
* public Queue(int size) {
* @param x element to be added maxSize = size;
* @return True if the element was added successfully queueArray = new int[size];
*/ front = 0;
public boolean insert(int x){ rear = -1;
if(isFull()) nItems = 0;
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++; * Inserts an element at the rear of the queue
queueArray[rear] = x; *
nItems++; * @param x element to be added
return true; * @return True if the element was added successfully
} */
public boolean insert(int x) {
/** if (isFull())
* Remove an element from the front of the queue return false;
* if (rear == maxSize - 1) // If the back of the queue is the end of the array wrap around to the front
* @return the new front of the queue rear = -1;
*/ rear++;
public int remove(){ //Remove an element from the front of the queue queueArray[rear] = x;
if(isEmpty()){ nItems++;
System.out.println("Queue is empty"); return true;
return -1; }
}
int temp = queueArray[front]; /**
front++; * Remove an element from the front of the queue
if(front == maxSize) //Dealing with wrap-around again *
front = 0; * @return the new front of the queue
nItems--; */
return temp; public int remove() { // Remove an element from the front of the queue
} if (isEmpty()) {
System.out.println("Queue is empty");
/** return -1;
* Checks what's at the front of the queue }
* int temp = queueArray[front];
* @return element at the front of the queue front++;
*/ if (front == maxSize) //Dealing with wrap-around again
public int peekFront(){ front = 0;
return queueArray[front]; nItems--;
} return temp;
}
/**
* Checks what's at the rear of the queue /**
* * Checks what's at the front of the queue
* @return element at the rear of the queue *
*/ * @return element at the front of the queue
public int peekRear(){ */
return queueArray[rear]; public int peekFront() {
} return queueArray[front];
}
/**
* Returns true if the queue is empty /**
* * Checks what's at the rear of the queue
* @return true if the queue is empty *
*/ * @return element at the rear of the queue
public boolean isEmpty(){ */
return(nItems == 0); public int peekRear() {
} return queueArray[rear];
}
/**
* Returns true if the queue is full /**
* * Returns true if the queue is empty
* @return true if the queue is full *
*/ * @return true if the queue is empty
public boolean isFull(){ */
return(nItems == maxSize); public boolean isEmpty() {
} return (nItems == 0);
}
/**
* Returns the number of elements in the queue /**
* * Returns true if the queue is full
* @return number of elements in the queue *
*/ * @return true if the queue is full
public int getSize(){ */
return nItems; public boolean isFull() {
} return (nItems == maxSize);
}
/**
* Returns the number of elements in the queue
*
* @return number of elements in the queue
*/
public int getSize() {
return nItems;
}
} }
/** /**
* 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
} }
} }