Lista enlazada

package listas.les;
public class ListaEnlazada
{

private Nodo primero;
private Nodo Comienzo;

//La funcion agregaNodo, ingresa un nodo al final de la lista
//recibe como parametro el dato que va ser del tipo declarado en la
//clase nodo

public void agregaNodo (int dato)
{
Nodo elemento;
Nodo elemento_aux;
if (listaVacia())
{
elemento = new Nodo(dato);

primero = elemento;
}
else
{
elemento = primero;
elemento_aux = primero;

while(elemento != null)
{
elemento = elemento;
elemento = elemento.getLiga();
}
elemento = new Nodo(dato);
elemento_aux.setLiga(elemento);
}
}
/* agregaNodoInicio Funcion que agrega un nodo al inicio de la lista
*
*/
public void agregarNodoInicio(int dato)
{

Nodo elemento;
if (listaVacia())
{

elemento = new Nodo(dato);
primero = elemento;
}

else
{
elemento = new Nodo(dato);
elemento.setLiga(primero);
primero = elemento;
}

/* ¿Que debo hacer y como lo debo hacer?
* Actividad: Realizar el procedimiento para agregar un nodo al inicio de la lista
*/
}

//Elimina un nodo con cierta informacion en daso caso que el nodo no se encuentre
// se envia como retorno falso, si la eliminacion es realizada se envia como valor de retorno verdadero
public boolean quitaNodo(int dato)
{
Nodo elemento;
Nodo elemento_aux;

if(listaVacia() == false) // if (!listaVacia) == false ){
{
elemento_aux = primero;
elemento = primero;

while( elemento != null && elemento.getDato() != dato)
{
elemento_aux = elemento;
elemento = elemento.getLiga();
}
if(elemento != null && elemento.getDato() == dato)
{
if(elemento == primero)
{
primero = elemento.getLiga();
}

else
{
elemento_aux.setLiga(elemento.getLiga());
}
return true;
}
else
{
return false;
}

}
else
{
return false;
}

}

/*
*
*Procedimiento listaVacia() - Comprueba si hay elementos si existen elementos
* retorna falso, en caso contrario retorna verdadero
*/

public boolean listaVacia()
{
if (primero == null)
return true;
else
return false;
}

public int numeroNodos()
{
Nodo elemento;
int i = 1;
elemento = primero;

while (elemento != null)
{

i = i + 1;
elemento = elemento.getLiga();
}
return i-1;
}

public int obtenNodo (int nNodo)
{
Nodo elemento;
elemento = primero;

for (int i = 0; i < nNodo; i++)
{
elemento = elemento.getLiga();
}
return elemento.getDato();
}

/*
* Metodo obtenPosicionnNodo: este metodo busca un nodo con cierto contenido
* y devuelve la posicion que ocupa en la lista, en dado caso de que el nodo
* que se busca no exista o la lista este vacia devolvera 0
*/

public int obtenPosicionNodo (int dato)
{
Nodo elemento;
int i, j=1;
elemento = primero;
i = numeroNodos();
if (i>0)
{
while(elemento!=null && elemento.getDato() !=dato)
{
elemento = elemento.getLiga();
j = j+1;
}
if (i >= j)
{
return j;
}
}
return 0;
}

/*
* Metodo agregaNodoAntesDe: Ingresa un nuevo nodo antes de un nodo con cierta
* informacion, en dado caso que el nodo no exista se devolvera un falso y no se agregara el nodo a la lista.
*/
}

Quisiera ver si alguien puede ayudarme con este código...
tengo que realizar un nodo llamado agregaNodoAntesDe donde tengo que mandar a buscar un nodo y proseguir a insertar un nodo!
Soy algo nuevo. espero alguien pueda ayudarme.
Saludos