Exception in thread "main" java.lang.NullPointerException (ESTRUTURA DINAMICA)

estou com problema nessa estrutura:

//metodo para inserir no inicio da lista
public void inserirNoInicio(int elemento){
if(this.qtdElementos==0){
this.calda=this.cabeca;
}
Alunos novo = new Alunos(elemento, this.cabeca);
this.cabeca=novo;
this.qtdElementos++;
}
//metodo para inserir no fim da lista
public void inserirNoFinal(int elemento){
if(this.qtdElementos==0){
this.inserirNoInicio(elemento);
}else{
Alunos nova = new Alunos(elemento);
this.calda.setProx(nova);
this.calda=nova;
this.qtdElementos++;
}
// metodo para mostrar os elementos da lista

public void mostrar(){
if(this.qtdElementos==0){
System.out.println("[lista vazia]");
}else{
System.out.print("[");
for(int i=0;i<this.qtdElementos-1;i++){
System.out.print(this.cabeca.getNota()+", “);
this.cabeca=this.cabeca.getProx();
}
System.out.println(this.cabeca.getNota()+”]");
}
}

//metodo principal
public static void main(String[] args) {
AlunosLista l = new AlunosLista();

    l.inserirNoFinal(2);
    l.inserirNoFinal(3);
    l.inserirNoFinal(4);
    l.inserirNoFinal(5);
    
    
    
    
    l.mostrar();
}

Você tem de inicializar o seu vetor.

NullPointerException ocorre quando você tenta utilizar algum objeto que não foi instanciado.