Problema:    
    
Considerare una Single Linked List di interi. Scrivere un metodo che ritorna il valore dell’elemento distante nth dall’ultimo elemento. Se non esiste sollevare una eccezione.
  Il codice della struttura dati e’ presente in un precedente post.
  Input:
  Un intero (nht) che rappresenta la distanza dall’ultimo elemento della lista
  Output:
  Un intero che rappresenta il valore dell’elemento desiderato.
  Esempio:
  Lista: 5, 7, 2, 4, 3, 9
  Input: 0   
Output: 9
  Input: 1   
Output: 3
  Input: 5   
Output: 5
  Input: 6   
Output: eccezione
  Il mio ragionamento
  Scorro la lista utilizzando due puntatori a distanza nth. Quando arrivo in fondo il primo puntatore puntera’ all’elemento desiderato (se la lista e’ sufficientemente lunga).
  La mia soluzione
    public int GetNthToLastElement(int nth)
 {
     if (nth < 0) throw new ArgumentOutOfRangeException("nth");
 
     Node p = head;
     Node q = null;
 
     while (p != null)
     {
         if (nth == 0) q = (q == null) ? head : q.Next;
         else --nth;
 
         p = p.Next;
     }
 
     if (q == null) throw new ArgumentOutOfRangeException("nth");
 
     return q.Value;
 }