private static class Node<E> {

   private E data;                /**The data value. */
   private Node<E> next = null;   /** The link */

   /**
    * Construct a node with the given data value and link
    * @param data - The data value 
    * @param next - The link
    */
   private Node(E data, Node<E> next) {
         this.data = data;
         this.next = next;
   }

   /**
    * Construct a node with the given data value
    * @param data - The data value 
    */
   private Node(E data) {
         this(data, null);
   }
}

static nested class does not have access to other members of the enclosing class. That is,
The keyword static indicates that the Node<E> class will not reference its outer class.

non-static nested class is an inner class.  For example,

public class ShadowTest {
    public int x = 0;
    class FirstLevel {
        public int x = 1;
        void methodInFirstLevel(int x) {
            System.out.println("x = " + x);
            System.out.println("this.x = " + this.x);
            System.out.println("ShadowTest.this.x = " + ShadowTest.this.x);
        }
    }

    public static void main(String... args) {
        ShadowTest st = new ShadowTest();
        ShadowTest.FirstLevel fl = st.new FirstLevel();
        fl.methodInFirstLevel(23);
    }
}
/*
The following is the output of this example:
x = 23
this.x = 1
ShadowTest.this.x = 0
*/