Update Queues.java
This commit is contained in:
parent
c725d91ecf
commit
2b3e82fd4c
@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user