Ragazzi ho implementato l'Interfaccia Coda<T> tramite la classe CodaCollegata<T> che riporto di seguito:

package coda;

public class CodaCollegata<T> implements Coda<T> {
private Record<T> inizio = null;
private Record<T> fine = null;

@Override
public void dequeue() {
if (isEmpty())throw new EccezioneCodaVuota("coda vuota");
inizio=inizio.succ;

}

@Override
public void enqueue(T e) {
if (isEmpty()){
inizio = new Record(e);
inizio.succ=fine;
}
else {
Record<T> temp = new Record<T>(e);
fine.succ=temp;
fine=temp;
}
}

@Override
public T first() {
if(isEmpty())
return null;
return (T) inizio.elem;

}

@Override
public boolean isEmpty() {
return inizio == fine;
}

public static void main(String[] args) {
Coda<String> test = new CodaCollegata<String>();
test.enqueue("b");
test.enqueue("c");


System.out.println(test.first());
}
}

Se inserisco un solo elemento non ho nessun errore in fare di esecuzione invece se inserisco il secondo mi da questo errore sempre in fase di esecuzione

Exception in thread "main" java.lang.NullPointerException
at coda.CodaCollegata.enqueue(CodaCollegata.java:22)
at coda.CodaCollegata.main(CodaCollegata.java:42)


riporto anche la classe Record<T>
package coda;

public class Record<T> {
public Object elem;
public Record succ;

public Record(Object elem){
this.elem=elem;
succ=this;
}


}
vi ringrazio anticipatamente