package com.coding.basic.queue; import java.util.NoSuchElementException; public class Queue<E> { private Node<E> first; private Node<E> last; private int size; private static class Node<E> { private E item; private Node<E> next; } public Queue() { first = null; last = null; size = 0; } public boolean isEmpty() { return first == null; } public int size() { return size; } public void enQueue(E data) { Node<E> oldlast = last; last = new Node<E>(); last.item = data; last.next = null; if (isEmpty()) { first = last; } else{ oldlast.next = last; } size++; } public E deQueue() { if (isEmpty()) { throw new NoSuchElementException("Queue underflow"); } E item = first.item; first = first.next; size--; if (isEmpty()) { last = null; } return item; } }