class Nodo
{
public int info;
public Nodo enlace;
public Nodo(){}
}
public class Lista
{
Nodo cab; //declaración del nodo
void InsertarNodo(int n) //inserción por delante
{ if(cab==null) //entra la primera vez
{
cab = new Nodo(); //crea el nodo cab
cab.info=n;
cab.enlace=null; //su primer enlace apunta a null
}
else {
Nodo temp=new Nodo(); //nodo temporal
temp.info=n;
temp.enlace=cab;
cab=temp;
}
}
void mostrarLista()
{
Nodo temp=cab;
while(temp!=null) //recorre hasta llegar a null
{
System.out.print(temp.info);
temp=temp.enlace;
}
}
void insertarordenado(int n)
{
Nodo temp=cab;
int aux;
Nodo temp2=new Nodo();
temp2.info=n;
while(temp!=null)
{
if(temp.info<temp2.info)
{
temp2.enlace=temp.enlace;
temp.enlace=temp2;
}
else
{
aux=temp.info;
temp.info=temp2.info;
temp2.info=aux;
temp2.enlace=temp.enlace;
temp.enlace=temp2;
}
temp=temp.enlace;
}
}
}
class prueba
{
public static void main(String[] args)
{
Lista A=new Lista();
A.InsertarNodo(2);
A.InsertarNodo(5);
A.InsertarNodo(8);
A.insertarordenado(3);
A.mostrarLista();
}
}
-------------------------------------------------------------------------------------------------------------------
//lista generica
package listagenerica;
/**
*
* @author LEONARDO
*/
public class ListaGenerica
{
class Nodo
{
int info;
Nodo ant,sig;
}
private Nodo raiz;
public ListaGenerica ()
{
raiz=null;
}
void insertar (int pos, int x)
{
if (pos <= cantidad () + 1)
{
Nodo nuevo = new Nodo ();
nuevo.info = x;
if (pos == 1)
{
nuevo.sig = raiz;
if (raiz!=null)
raiz.ant=nuevo;
raiz = nuevo;
}
else
if (pos == cantidad () + 1)
{
Nodo reco = raiz;
while (reco.sig != null)
{
reco = reco.sig;
}
reco.sig = nuevo;
nuevo.ant=reco;
nuevo.sig = null;
}
else
{
Nodo reco = raiz;
for (int f = 1 ; f <= pos - 2 ;f++)
reco = reco.sig;
Nodo siguiente = reco.sig;
reco.sig = nuevo;
nuevo.ant=reco;
nuevo.sig = siguiente;
siguiente.ant=nuevo;
}
}
}
public int extraer (int pos)
{
if (pos <= cantidad ())
{
int informacion;
if (pos == 1)
{
informacion = raiz.info;
raiz = raiz.sig;
if (raiz!=null)
raiz.ant=null;
}
else
{
Nodo reco;
reco = raiz;
for (int f = 1 ; f <= pos - 2 ; f++)
reco = reco.sig;
Nodo prox = reco.sig;
reco.sig = prox.sig;
Nodo siguiente=prox.sig;
if (siguiente!=null)
siguiente.ant=reco;
informacion = prox.info;
}
return informacion;
}
else
return Integer.MAX_VALUE;
}
public void borrar (int pos)
{
if (pos <= cantidad ())
{
if (pos == 1)
{
raiz = raiz.sig;
if (raiz!=null)
raiz.ant=null;
}
else
{
Nodo reco;
reco = raiz;
for (int f = 1 ; f <= pos - 2 ; f++)
reco = reco.sig;
Nodo prox = reco.sig;
prox=prox.sig;
reco.sig = prox;
if (prox!=null)
prox.ant=reco;
}
}
}
public void intercambiar (int pos1, int pos2)
{
if (pos1 <= cantidad () && pos2 <= cantidad())
{
Nodo reco1 = raiz;
for (int f = 1 ; f < pos1 ; f++)
reco1 = reco1.sig;
Nodo reco2 = raiz;
for (int f = 1 ; f < pos2 ; f++)
reco2 = reco2.sig;
int aux = reco1.info;
reco1.info = reco2.info;
reco2.info = aux;
}
}
public int mayor ()
{
if (!vacia ())
{
int may = raiz.info;
Nodo reco = raiz.sig;
while (reco != null)
{
if (reco.info > may)
may = reco.info;
reco = reco.sig;
}
return may;
}
else
return Integer.MAX_VALUE;
}
public int posMayor()
{
if (!vacia ())
{
int may = raiz.info;
int x=1;
int pos=x;
Nodo reco = raiz.sig;
while (reco != null)
{
if (reco.info > may)
{
may = reco.info;
pos=x;
}
reco = reco.sig;
x++;
}
return pos;
}
else
return Integer.MAX_VALUE;
}
public int cantidad ()
{
int cant = 0;
Nodo reco = raiz;
while (reco != null)
{
reco = reco.sig;
cant++;
}
return cant;
}
public boolean ordenada()
{
if (cantidad()>1)
{
Nodo reco1=raiz;
Nodo reco2=raiz.sig;
while (reco2!=null)
{
if (reco2.info<reco1.info)
{
return false;
}
reco2=reco2.sig;
reco1=reco1.sig;
}
}
return true;
}
public boolean existe(int x)
{
Nodo reco=raiz;
while (reco!=null)
{
if (reco.info==x)
return true;
reco=reco.sig;
}
return false;
}
public boolean vacia ()
{
if (raiz == null)
return true;
else
return false;
}
public void imprimir ()
{
Nodo reco = raiz;
while (reco != null)
{
System.out.print (reco.info + "-");
reco = reco.sig;
}
System.out.println();
}
public static void main(String[] args)
{
ListaGenerica lg=new ListaGenerica();
lg.insertar (1, 10);
lg.insertar (2, 20);
lg.insertar (3, 30);
lg.insertar (2, 15);
lg.insertar (1, 115);
lg.imprimir ();
System.out.println ("Luego de Borrar el primero");
lg.borrar (1);
lg.imprimir ();
System.out.println ("Luego de Extraer el segundo");
lg.extraer (2);
lg.imprimir ();
System.out.println ("Luego de Intercambiarel primero con el tercero");
lg.intercambiar (1, 3);
lg.imprimir ();
if (lg.existe(10))
System.out.println("Se encuentra el 20 en la lista");
else
System.out.println("No se encuentra el20 en la lista");
System.out.println("La posición del mayor es:"+lg.posMayor());
if (lg.ordenada())
System.out.println("La lista está ordenada de menor a mayor");
else
System.out.println("La lista no está ordenada de menor a mayor");
}
}
/*
Plantear una clase para administrar una lista genér
ica doblemente encadenada
implementando los siguientes métodos:
a) Insertar un nodo al principio de la lista.
b) Insertar un nodo al final de la lista.
c) Insertar un nodo en la segunda posición. Si la l
ista está vacía no se inserta el nodo.
d) Insertar un nodo en la ante última posición.
e) Borrar el primer nodo.
f) Borrar el segundo nodo.
g) Borrar el último nodo.
h) Borrar el nodo con información mayor.
*/
package listagenericadoble;
/**
*
* @author LEONARDO
*/
public class ListaGenericaDoble
{
class Nodo
{
int info;
Nodo ant,sig;
}
private Nodo raiz;
public ListaGenericaDoble ()
{
raiz=null;
}
void insertarPrimero(int x)
{
Nodo nuevo = new Nodo ();
nuevo.info = x;
nuevo.sig=raiz;
if (raiz!=null)
raiz.ant=nuevo;
raiz=nuevo;
}
public void insertarUtlimo(int x)
{
Nodo nuevo = new Nodo ();
nuevo.info = x;
if (raiz==null)
raiz=nuevo;
else
{
Nodo reco=raiz;
while (reco.sig!=null)
{
reco=reco.sig;
}
reco.sig=nuevo;
nuevo.ant=reco;
}
}
public void insertarSegundo(int x)
{
if (raiz!=null)
{
Nodo nuevo = new Nodo ();
nuevo.info = x;
if (raiz.sig==null)
{
//Hay un solo nodo.
raiz.sig=nuevo;
nuevo.ant=raiz;
}
else
{
Nodo tercero=raiz.sig;
nuevo.sig=tercero;
tercero.ant=nuevo;
raiz.sig=nuevo;
nuevo.ant=raiz;
}
}
}
public void insertarAnteUltimo(int x)
{
if (raiz!=null)
{
Nodo nuevo = new Nodo ();
nuevo.info = x;
if (raiz.sig==null)
{
//Hay un solo nodo.
nuevo.sig=raiz;
raiz=nuevo;
}
else
{
Nodo reco=raiz;
while (reco.sig!=null)
{
reco=reco.sig;
}
Nodo anterior=reco.ant;
nuevo.sig=reco;
nuevo.ant=anterior;
anterior.sig=nuevo;
reco.ant=nuevo;
}
}
}
public void borrarPrimero()
{
if (raiz!=null)
{
raiz=raiz.sig;
}
}
public void borrarSegundo()
{
if (raiz!=null)
{
if (raiz.sig!=null)
{
Nodo tercero=raiz.sig;
tercero=tercero.sig;
raiz.sig=tercero;
if (tercero!=null)
tercero.ant=raiz;
}
}
}
public void borrarUltimo ()
{
if (raiz!=null)
{
if (raiz.sig==null)
{
raiz=null;
}
else
{
Nodo reco=raiz;
while(reco.sig!=null)
{
reco=reco.sig;
}
reco=reco.ant;
reco.sig=null;
}
}
}
public void imprimir ()
{
Nodo reco = raiz;
while (reco != null)
{
System.out.print (reco.info + "-");
reco = reco.sig;
}
System.out.println();
}
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;
while (reco!=null)
{
if (reco.info==may)
{
if (reco==raiz)
{
raiz=raiz.sig;
if (raiz!=null)
raiz.ant=null;
reco=raiz;
}
else
{
Nodo atras=reco.ant;
atras.sig=reco.sig;
reco=reco.sig;
if (reco!=null)
reco.ant=atras;
}
}
else
reco=reco.sig;
}
}
}
public static void main(String[] ar)
{
ListaGenericaDoble lg=new ListaGenericaDoble();
lg.insertarPrimero (10);
lg.insertarPrimero(45);
lg.insertarPrimero(23);
lg.insertarPrimero(89);
lg.imprimir();
System.out.println("Insertamos un nodo al final:");
lg.insertarUtlimo(160);
lg.imprimir();
System.out.println("Insertamos un nodo en la segunda posición:");
lg.insertarSegundo(13);
lg.imprimir();
System.out.println("Insertamos un nodo en la anteultima posición:");
lg.insertarAnteUltimo(600);
lg.imprimir();
System.out.println("Borramos el primer nodode la lista:");
lg.borrarPrimero();
lg.imprimir();
System.out.println("Borramos el segundo nodo de la lista:");
lg.borrarSegundo();
lg.imprimir();
System.out.println("Borramos el ultimo nodo de la lista:");
lg.borrarUltimo();
lg.imprimir();
System.out.println("Borramos el mayor de la lista:");
lg.borrarMayor();
lg.imprimir();
}
}
No hay comentarios:
Publicar un comentario