Monday, January 25, 2016

Queue Implementation In java

package Queue;

import Stack.DynamicArrayStack;

public class DynamicArrayQueue {

private int[] queueRep;
private int front, size, rear;
private static int CAPACITY = 4;
public static int MINCAPACITY = 1 << 15;

DynamicArrayQueue() {
queueRep = new int[CAPACITY];
front = 0;
size = 0;
rear = 0;
}

DynamicArrayQueue(int cap) {
queueRep = new int[cap];
front = 0;
size = 0;
rear = 0;
}

public void enQueue(int data) {
if (size == CAPACITY)
expand();
size++;
queueRep[rear] = data;
rear = (rear+1) % CAPACITY;
}

public int deQueue() {
size--;
int data = queueRep[front % CAPACITY];
queueRep[front] = Integer.MIN_VALUE;
front = (front + 1) % CAPACITY;
return data;
}

public int size() {
return size;
}

public boolean isEmpty() {
return (size == 0);
}

public boolean isFull() {
return (size == CAPACITY);
}

public void expand() {
int length = size();
int[] newQueue = new int[length << 1];
System.out.println("rear"+rear);
for (int i = front; i <= rear; i++){
System.out.println(queueRep[i]);
//here i- front to just make 0 value
newQueue[i - front] = queueRep[i % CAPACITY];
}
queueRep = newQueue;
front = 0;
rear = size - 1;
CAPACITY *= 2;
}

public DynamicArrayQueue queueReversal(DynamicArrayQueue queue) throws Exception{
DynamicArrayStack stack = new DynamicArrayStack(5);
while(!queue.isEmpty()){
stack.push(queue.deQueue());
}
while(!stack.isEmpty()){
queue.enQueue(stack.pop());
}
return queue;
}

public String toString() {
String result = "[";
for (int i = 0; i < size; i++) {
result += Integer.toString(queueRep[(front + i) % CAPACITY]);
if (i < size - 1) {
result += ",";
}
}
result += "]";
return result;
}

public static void main(String[] args) {
DynamicArrayQueue obj = new DynamicArrayQueue();
obj.enQueue(1);
obj.enQueue(2);
obj.enQueue(3);


System.out.println(obj);
//obj.deQueue();
//obj.deQueue();
System.out.println(obj);

}
}

No comments:

Post a Comment