class List  // I want to use 1 prgram file for this example
{
   int value;
   List next;
}

public class demo
{
   public static void main(String[] args)
   {
      List head = null;    // Empty list
      List p;

      /* -------------------------------------------------
         Create a list element and insert in List at head
         ------------------------------------------------- */
      for( int i=1; i <= 10; i++ )
      {
         p = new List( );
         p.value = i;
         head = insert(head, p);       // Insert p in head
         print(head);
      } 
   }

   /* =========================================
      insert(h, e): insert e at tail of list h
                    return new list

      A List variable is a reference variable !!!
      ========================================= */
   public static List insert( List head, List e )
   {
      /* --------------------------------------------
          Base case: insert at the tail of an empty
         -------------------------------------------- */
      if ( head == null )
      {
         e.next = null;     // Mark e as the last list elem
         return(e);         // e is the first list elem !
      }
      else
      {
         /* ===========================================================
            Solve the problem USING the solution of a smaller problem
            =========================================================== */
         head.next = insert( head.next, e ); // Link directly to helpSol

         return head;             // Return MY solution
      }
   } 

   // Print the list
   public static void print(List h)
   {
      while (h != null)
      {
         System.out.printf("%d ", h.value);
         h = h.next;
      }
      System.out.printf("\n\n");
   }
}