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;
}
}
Suscribirse a:
Enviar comentarios (Atom)
Lízbeth Alejandra Lopez Jimenez
No hay comentarios:
Publicar un comentario