el codigo es el siguiente:
public class nodo {
protected int info;
protected nodo nexo;
nodo() {}
nodo(int info) {
this.info = info;
this.nexo = null;
}}
public class Lista extends nodo {
nodo Inicio, Ultimo;
Lista()
{
Inicio= null;
Ultimo= null;
}
public void agregar(nodo nuevo)
{
if(Ultimo==null)
Inicio = nuevo;
else
Ultimo.nexo = nuevo;
Ultimo = nuevo;
}
public void mostrar()
{
System.out.print("Lista");
nodo p=Inicio;
while(p!=null) {
System.out.print(" - " + p.info);
p = p.nexo;
}
System.out.println();
}
// METODOS QUE FALTAN POR CODIFICAR
public boolean existeNodoCon(int info)
{
nodo p=Inicio;
while(p!=null)
{
if(p.info==info)
{
return true;
}
p=p.nexo;
}
return false;
}
public void eliminaPrimero()
{
if(Ultimo!=null)
{
if(Inicio.nexo==null)
{
Inicio=null;
Ultimo=null;
}
else
{
Inicio=Inicio.nexo;
}
}
}
public void eliminaUltimo()
{
nodo p=Inicio;
while(p!=Ultimo)
{
if(p.nexo==Ultimo)
{
p.nexo=null;
Ultimo=p;
}
else
{
p=p.nexo;
}
}
}
public void muestraAlreves()
{
Alveres(Inicio);
System.out.println();
}
private void Alveres(nodo p)
{
if(p.nexo==null)
{
System.out.print(p.info+"-"); }
else
{
Alveres(p.nexo);
System.out.print(p.info+"-");
} }
public boolean vacia()
{
if(Inicio==null)
{
return true;
}
else return false;
}
public void EliCon(int dato)
{
nodo ant=Inicio;
nodo p=Inicio;
while(p!=null)
{
if(p.info==dato)
{
if(p==Inicio)
{
eliminaPrimero();
}
else
{ ant.nexo=p.nexo;
p=p.nexo;
} }
else
{ ant=p;
p=p.nexo;
} } }
public void Inter(int dato)
{
nodo p=Inicio;
nodo ant=Inicio;
nodo q,r;
while(p!=null)
{
if(p.info==dato)
{
if(p==Inicio)
{
q=p.nexo;
r=q.nexo;
Inicio=q;
Inicio.nexo=p;
p.nexo=r;
ant=p;
p=p.nexo;
}
else
{
if(p.nexo!=null)
{
q=p.nexo;
r=q.nexo;
p.nexo=r;
ant.nexo=q;
q.nexo=p;
ant=p;
p=p.nexo;
} } }
else{
ant=p;
p=p.nexo;}
} }}
public class principal{
public static void main(String args[]) {
Lista miLista = new Lista ();
nodo nuevo;
int info=0, inf;
for(int i=0; i<10; i++) {
if(Math.random()>0.7) info = 12;
else info = 10 + (int)(Math.random()*90);
nuevo = new nodo(info);
miLista.agregar(nuevo);
miLista.mostrar();
}
miLista.EliCon(12);
miLista.mostrar();
System.out.println();
while(!miLista.vacia()) miLista.eliminaPrimero();
for(int i=0; i<10; i++) {
if(Math.random()>0.7) info = 12;
else info = 10 + (int)(Math.random()*90);
nuevo = new nodo(info);
miLista.agregar(nuevo);
miLista.mostrar();
}
miLista.Inter(12);
miLista.mostrar();
System.out.println();
while(!miLista.vacia()) miLista.eliminaPrimero();
for(int i=0; i<10; i++) {
if(Math.random()>0.7) info = 12;
else info = 10 + (int)(Math.random()*90);
if(i==8) info =12;
nuevo = new nodo(info);
miLista.agregar(nuevo);
miLista.mostrar();
}
miLista.Inter(12);
miLista.mostrar();
System.out.println();
inf = info;
System.out.print("nodo de contenido " + inf);
if(miLista.existeNodoCon(info)) System.out.println(" esta");
else System.out.println(" No esta");
info = 10 + (int)(Math.random()*90);
System.out.print(" nodo de contenido " + info);
if(miLista.existeNodoCon(info)) System.out.println(" esta");
else System.out.println(" No esta");
System.out.print("elimina el primer nodo ");
miLista.eliminaPrimero();
miLista.mostrar();
System.out.print("elimina ultimo nodo ");
miLista.eliminaUltimo();
miLista.mostrar();
System.out.print("mostrando al reves ");
miLista.muestraAlreves();
}
}