sábado, 2 de julio de 2011

Un poco de lista

Otro codigo de Listas.

//clase Lista

import java.util.*;

public class Lista{

Object dato;
Nodo Inicio;
Nodo Ultimo;
Nodo P;
Nodo anterior;

public void Lista(){
Inicio = null;
Ultimo = null;
}



public boolean vacia(){
if(Inicio==null)
return true;
else
return false;
}
//---------------------------------------------------------


//---------------------------------------------------------
public void InsertaInicio(int valor)
{

Nodo Nuevo = new Nodo(valor);
// Nuevo.dato = valor;
Nuevo.Sig = Inicio;
Inicio = Nuevo;
if( Ultimo == null){
Ultimo = Nuevo;


}
}
//---------------------------------------------------------

public void InsertaFinal(int valor){


Nodo Nuevo = new Nodo(valor);
// Nuevo.dato = valor;
Nuevo.Sig = null;
if (Ultimo == null){
Inicio = Nuevo;
}
else {
Ultimo.Sig = Nuevo;
Ultimo = Nuevo;

}
}
//---------------------------------------------------------


public void Despues(int valor, int cual){
Nodo donde = Existe(cual);
if(donde != null){
Nodo nuevo = new Nodo(valor);
// nuevo.dato = valor;
nuevo.Sig = donde.Sig;
donde.Sig=nuevo;
if( nuevo.Sig==null)
Ultimo= nuevo;
}
}
//---------------------------------------------------------

public Nodo Existe(int cual){
Nodo aca = null;
P= Inicio;
while(P!=null){
if ( P.dato == cual){
aca= P;
P= null;
}
else{
P=P.Sig;}}
return aca;
}


//______________________________________

public void borraultimo()
{


Nodo penultimo;
Nodo ultimo;


P = Inicio;
penultimo = null;
ultimo = null;

while(P != null)
{
penultimo = ultimo;
ultimo = P;
P = P.Sig;
}

if(ultimo != null)
{
if( penultimo == null)
{ Inicio= null;}
else{ penultimo.Sig = null;}
}


}

//______________________________________

public void eliminarPrimero(){

if(Inicio != null){
P= Inicio;
Inicio= Inicio.Sig;
}}


//---------------------------------------------------------

public void Mostrar()
{


System.out.print("lista");
P=Inicio;
while(P!=null)
{
System.out.print(" --> " + P.dato);
P=P.Sig;
}
System.out.println();
}


public void Eliminarcualquiera()
{



}
public void Eliminarcualquiera(int valor)
{
anterior = null;
P= Inicio;

while( P != null){

if ( valor == P.dato){
if(anterior==null){
Inicio= P.Sig;}
else{
anterior.Sig= P.Sig;
}
P=null;}
else{
anterior=P;
P=P.Sig;
}
}
}
public void invertir_lista()
{ P=Inicio;
if(vacia()){
System.out.println("Lista vacia");
}
else{
while(P.Sig!=null){
Nodo Q =P.Sig;
if(Q.Sig==null){
Q.Sig= Inicio;
Inicio=Q;
Ultimo=P;
P.Sig=null;
}
else{
P.Sig=Q.Sig;
Q.Sig=Inicio;
Inicio=Q;
}
}
}
}

}

//Clase principal

import java.util.*;
import java.lang.*;
public class Principal{
public static void main()throws java.io.IOException{
Scanner leer = new Scanner(System.in);
int opcion;
int dato;
int cual;

Lista Milista = new Lista();

do{
System.out.println("escriba 0 si decea salir del programa ");
System.out.println("escriba 1 si decea agregar al incio ");
System.out.println("escriba 2 si decea agregar al final");
System.out.println("escriba 3 si decea agregar despues.. ");
System.out.println("escriba 4 si decea Mostrar dato ");
System.out.println("escriba 5 si decea borrar el primero ");
System.out.println("escriba 6 si decea borrar el ultimo ");
System.out.println("escriba 7 si decea borrar cualquier nodo ");
System.out.println("escriba 8 si decea invertir la Lista ");



System.out.println("Ingrese opcion: ");

opcion= leer.nextInt();

switch(opcion){

case 1:
System.out.println("ingrese dato:");
dato = leer.nextInt();
Milista.InsertaInicio(dato);
break;


case 2:

System.out.println("ingrese dato:");
dato = leer.nextInt();
Milista.InsertaFinal(dato);
break;


case 3:
if(Milista.vacia()){
System.out.println("Lista vacia:");}
else{
System.out.println("dato");
dato = leer.nextInt();
System.out.println("despues de");
cual = leer.nextInt();
Milista.Despues(dato,cual);
}
break;
case 4:

Milista.Mostrar();

break;

case 5:

if(Milista.vacia()){
System.out.println("Lista vacia:");}
else{
Milista.eliminarPrimero();
}
break;

case 6:

if(Milista.vacia()){
System.out.println("Lista vacia:");}
else{
Milista.borraultimo();
}

break;
case 7:
if(Milista.vacia()){

System.out.println("error lista vacia"); }
else{
System.out.println("ingrese dato que quiere eliminar");
dato= leer.nextInt();
Milista.Eliminarcualquiera(dato);}

break;


case 8:


Milista.invertir_lista();
break;

default:
System.out.println("ha ingresado un numero fuera de rango o salido del programa");
break;


}

Milista.Mostrar();
System.out.println();
}while(opcion != 0);

}
}

//Clase Nodo

public class Nodo
{

int dato;
Nodo Sig;


public Nodo(int x){
dato =x;
Sig= null;
}

}

No hay comentarios:

Lízbeth Alejandra Lopez Jimenez