Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Fixing folder problems
  • Loading branch information
RianGallagher committed Nov 21, 2016
commit 67d3bf5ee126b30592d556c364de1a980c9bce8f
68 changes: 68 additions & 0 deletions data_structures/PriorityQueues.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
/*
* A priority queue adds elements into positions based on their priority.
* So the most important elements are placed at the front/on the top.
* In this example I give numbers that are bigger, a higher priority.
* Queues in theory have no fixed size but when using an array implementation it does.
*/
class PriorityQueue{
private int maxSize;
private int[] queueArray;
private int nItems;

public PriorityQueue(int size){ //Constructor
maxSize = size;
queueArray = new int[size];
nItems = 0;
}

public void insert(int value){ //Inserts an element in it's appropriate place
if(nItems == 0){
queueArray[0] = value;
}
else{
int j = nItems;
while(j > 0 && queueArray[j-1] > value){
queueArray[j] = queueArray[j-1];
j--;
}
queueArray[j] = value;
}
nItems++;
}

public int remove(){ //Remove the element from the front of the queue
return queueArray[--nItems];
}

public int peek(){ //Checks what's at the front of the queue
return queueArray[nItems-1];
}

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 PriorityQueues{
public static void main(String args[]){
PriorityQueue myQueue = new PriorityQueue(4);
myQueue.insert(10);
myQueue.insert(2);
myQueue.insert(5);
myQueue.insert(3);
//[2, 3, 5, 10] Here higher numbers have higher priority, so they are on the top

for(int i = 3; i>=0; i--)
System.out.print(myQueue.remove() + " "); //will print the queue in reverse order [10, 5, 3, 2]

//As you can see, a Priority Queue can be used as a sorting algotithm
}
}
86 changes: 86 additions & 0 deletions data_structures/Queues.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
/*
* 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
}
}