package week09.basic;
import java.util.NoSuchElementException;
public class Queue<T> {
private Node<T> first;
private Node<T> last;
private int size;
private static class Node<T>{
private Node<T> next;
private T data;
}
public Queue(){
first = null;
last = null;
size = 0;
}
public boolean isEmpty(){
return first == null;
}
public int size(){
return size;
}
public void enQueue(T data){
Node<T> oldlast = last;
last = new Node<T>();
last.data = data;
last.next = null;
if(isEmpty()){
first = last;
}else{
oldlast.next = last;
}
size ++;
}
public T deQueue(){
if(isEmpty()){
throw new NoSuchElementException("Queue is Empty");
}
T item = first.data;
first = first.next;
size --;
if(isEmpty()){
last = null;
}
return item;
}
@Override
public String toString(){
if(isEmpty()){
return "[]";
}
StringBuffer sb = new StringBuffer("[");
Node<T> node = first;
while(node != null){
if(node.next == null){
sb.append(node.data);
}else{
sb.append(node.data);
sb.append(",");
}
node = node.next;
}
sb.append("]");
return sb.toString();
}
}