Código
package listagenerica; public class ListaGenerica { class Nodo{ int info; Nodo sig; } private Nodo raiz; public void imprimir(){ Nodo reco=raiz; while(reco!=null){ reco=reco.sig; } } public void insertarPrimero(int x){ Nodo nuevo=new Nodo(); nuevo.info=x; nuevo.sig=raiz; raiz=nuevo; } public void insertarUltimo(int x){ Nodo nuevo=new Nodo(); nuevo.info=x; Nodo reco=raiz; while(reco.sig!=null){ reco=reco.sig; } reco.sig=nuevo; } public void insertarSegundo(int x){ Nodo nuevo=new Nodo(); nuevo.info=x; if(raiz!=null){ if(raiz.sig==null) raiz.sig=nuevo; else{ nuevo.sig=raiz.sig; raiz.sig=nuevo; } } } public void insertarAnteUltimo(int x){ Nodo nuevo=new Nodo(); nuevo.info=x; Nodo anterior=raiz; Nodo reco=raiz.sig; if(raiz!=null){ while(reco.sig!=null){ anterior=reco; reco=reco.sig; } nuevo.sig=anterior.sig; anterior.sig=nuevo; } } public void borrarPrimero(){ if(raiz!=null){ if(raiz.sig==null) raiz=null; else{ raiz=raiz.sig; } } } public void borrarSegundo(){ if(raiz!=null){ if(raiz.sig==null){ raiz=null; } else{ raiz.sig=raiz.sig.sig; } } } public void borrarUltimo(){ Nodo atras=raiz; Nodo reco=raiz.sig; if(raiz!=null){ if(raiz.sig==null){ raiz=null; } else{ while(reco.sig!=null){ atras=reco; reco=reco.sig; } atras.sig=null; } } } public void borrarMayor() { if (raiz!=null) { Nodo reco=raiz; int may=raiz.info; while (reco!=null) { if (reco.info>may) { may=reco.info; } reco=reco.sig; } reco=raiz; Nodo atras=raiz; while (reco!=null) { if (reco.info==may) { if (reco==raiz) { raiz=raiz.sig; atras=raiz; reco=raiz; } else { atras.sig=reco.sig; reco=reco.sig; } } else { atras=reco; reco=reco.sig; } } } } ListaGenerica l=new ListaGenerica(); l.insertarPrimero(2); l.insertarPrimero(1); l.insertarUltimo(3); l.insertarSegundo(8); l.insertarAnteUltimo(9); l.imprimir(); l.borrarPrimero(); l.imprimir(); l.borrarUltimo(); l.imprimir(); } }