package vipQueueLL;

public class vipQueue {

	int size;
	int currentCountOfNodes;
	Node firstNode;
	Node lastNode;
	
	public vipQueue(int size){
		this.size=size;
		this.currentCountOfNodes=0;
	}
	
	public void Enqueue(int itemToAdd){ //We assume a non-full queue
		Node nodeToAdd = new Node(itemToAdd);
		if(currentCountOfNodes==0){
			this.firstNode=nodeToAdd;
		}else{
			this.lastNode.next=nodeToAdd;
		}
		this.lastNode=nodeToAdd;
		this.currentCountOfNodes++;
	} 
	
	public void EnqueueVip(int itemToAdd){ //We assume a non-full queue
		Node nodeToAdd = new Node(itemToAdd);
		if(currentCountOfNodes==0){
			this.firstNode=nodeToAdd;
			this.lastNode=nodeToAdd;
		}else{
			nodeToAdd.next=this.firstNode;
			this.firstNode=nodeToAdd;
		}
		currentCountOfNodes++;
	}
	
	public int Dequeue(){ //We assume a nonempty queue
		int dataFromFront = this.firstNode.data;
		this.firstNode=this.firstNode.next;
		currentCountOfNodes--;
		return dataFromFront;
	}
	
	public boolean isFull(){
		if(currentCountOfNodes==size){
			return true;
		}else{
			return false;
		}
	}
	
	public boolean isEmpty(){
		if(currentCountOfNodes==0){
			return true;
		}else{
			return false;
		}
	}
	
	
}
