Está en la página 1de 10

Estructura de Datos

Practica
LISTA LIGADA
DIAZ MIRON MAC DONOUGH GABRIEL

Medrano Prez Jos Antonio Grupo: 1303

Octubre del 2012

Programa: Lista ligada El programa debe tener un men para poder seleccionar las opciones bsicas. Al ejecutar una operacin esta debe reflejar en la salida (vista utilizando arreglos). Utilizar una capacidad mxima de 5 cadenas.

NodoLista.Java
///clase (registro) que sirve para generar nodos de dos tipos de formas (2 constructores) public class NodoLista { // 2 campos Object Info; NodoLista Liga; //PRIMER CONSTRUCTOR public NodoLista(Object dato){ Info = dato; Liga = null; } //SEGUNDO CONSTRUCTOR public NodoLista(Object dato, NodoLista liga){ Info = dato; this.Liga = liga; /////el this solo es para decir que la primera "liga" } ////es global }

Lista.java
//// clase que manipula a los punteros para manipular los nodos en la memoria public class Lista{ // declarar los punteros!!! NodoLista Primero, ultimo, aux, nuevo, ant, post; public Lista(){ Primero = ultimo = aux = nuevo = ant = post = null; } public void insertarAlFrente(Object dato){ if(Primero==null){// si la lista esta vacia Primero = new NodoLista(dato); ultimo=Primero; } else{////ya hay mas nodos en la lista nuevo = new NodoLista(dato); ultimo.Liga = nuevo; ultimo = nuevo; } //despliegaLista();

} public void insertarAtras(Object dato){ if(Primero==null){// si la lista esta vacia Primero = new NodoLista(dato); ultimo=Primero; } else{ nuevo = new NodoLista(dato,Primero); Primero = nuevo; } //despliegaLista(); } public void despliegaLista(){ aux = Primero; System.out.println(); if(Primero==null) System.out.println ("LISTA VACIA"); else{ while (aux != null){ System.out.println(aux.Info); aux = aux.Liga; } //System.out.println ("##########LISTA COMPLETA#########"); } } /////////INSERTAR ANTES DE ////////// public void insertarAntesDe(Object DatoB,Object DatoI){ if(Primero==null){ System.out.println ("lista vacia"); } else{/////hay datos if(buscar(DatoB)== true){ ///////EMPEZAR A REALIZAR EL METODO if(aux==Primero){///caso 1 nuevo= new NodoLista(DatoI,Primero); Primero = nuevo; } else{//en caso de que no este al inicio de la lista nuevo = new NodoLista(DatoI , aux); ant.Liga = nuevo; } } } //despliegaLista(); } //////////////INSERTAR DESPUES DE////////////////// public void insertarDespuesDe(Object DatoB, Object DatoI){ if(Primero==null){

System.out.println ("lista vacia"); } else{///hay metodos if(buscar(DatoB)== true){ //////EMPEZAR A REALIZAR EL METODO///// if(aux==Primero){ nuevo=new NodoLista(DatoI); Primero.Liga=nuevo; } else{///en caso de que no este al inicio de la lista nuevo= new NodoLista(DatoI, aux.Liga); aux.Liga=nuevo; } } } //despliegaLista(); } ///////////////METODO ELIMINAR NODO////////////// public void eliminarNodo(Object DatoB){ if(Primero==null){ System.out.println ("lista vacia"); } else{ if(buscar(DatoB)==true){///hacer cuatro casos if(Primero==ultimo){//// 1 caso Primero=ultimo=null; } else if(aux==Primero){ Primero=aux.Liga; aux=null; } else if(aux==ultimo){ ultimo=ant; ultimo.Liga=null; aux=null; } else{ ant.Liga=aux.Liga; aux=null; } } } //despliegaLista(); } /////////////METODO PARA SUSTITUIR DATO/////////////// public void modificaLista(Object DatoB,Object DatoI){ if(Primero==null){ System.out.println ("lista vacia");

} else{ if(buscar(DatoB)==true){ aux.Info=DatoI; } } //despliegaLista(); } //////////////////////////METODO BUSCAR///////// public boolean buscar(Object DatoB){ aux = Primero; boolean bandera = false; while (aux != null && bandera != true) { if(DatoB.equals(aux.Info)){// si encuentra el dato bandera = true; } else{//apunta al siguiente nodo ant = aux; aux = aux.Liga; post = aux.Liga; } } if(bandera == true){ return true; } else{ System.out.println ("ese dato no existe"); return false; } } }

AppLista.java
import java.util.Scanner; import java.util.*; class AppLista{ public static void main(String args[]){ Lista lista = new Lista(); String DatoB,DatoI; int opcion; lista.despliegaLista(); //Inicializacion del teclado Scanner Teclado = new Scanner(System.in); Scanner Teclado2 = new Scanner(System.in); String cadena= Teclado2.nextLine(); do{ System.out.println("\n"); System.out.println ("1) Aregar"); System.out.println ("2) Insertar Antes de");

System.out.println ("3) Insertar Despues de"); System.out.println ("4) Eliminar Elemento"); System.out.println ("5) DesplegarLista"); System.out.println ("6) Salir"); opcion = Teclado.nextInt(); switch (opcion) { case 1: System.out.println ("Que Elemento quieres Agregar en la Lista: "); System.out.println(); DatoI = new String(Teclado2.nextLine()); lista.insertarAlFrente(DatoI); break; case 2: System.out.println ("Que Elemento quieres insertar en la Lista: "); System.out.println(); DatoI = new String(Teclado2.nextLine()); System.out.println ("Detras de que Elemento quieres insertar "+DatoI); DatoB = new String(Teclado2.nextLine()); //list.add(DatoB,DatoI); lista.insertarAntesDe(DatoB,DatoI); break; case 3: System.out.println ("Que Elemento quieres insertar Despues en la Lista: "); System.out.println(); DatoI = new String(Teclado2.nextLine()); System.out.println ("Despues de que Elemento quieres insertar el elemento:"+DatoI); DatoB = new String(Teclado2.nextLine()); lista.insertarDespuesDe(DatoB,DatoI); break; case 4: System.out.println ("Que Elemento quieres ELiminar de la Lista: "); System.out.println(); DatoB = new String(Teclado2.nextLine()); lista.eliminarNodo(DatoB); break; case 5: System.out.println("Mostrando el contenido de la Lista:"); lista.despliegaLista(); break; case 6: System.out.println ("\tSaliendo...\n"); break; default :System.out.println ("\topcion no valida intenta de nuevo\n"); } }while (opcion != 6); } }

OPCION 1: Agregar el elemento Ana a la lista

Opcion 5: Desplegando lista

OPCION 1: Agregar el elemento Beto a la lista

Opcion 5: Desplegando lista

OPCION 1: Agregar el elemento Carlos a la lista Opcion 5: Desplegando lista

Opcion 2: Insertar el elemento Daniel en la Segunda Posicin

Insertar Erick en la primer posicin:

Eliminar ANA

Insertar Fanny Despues en la tercera posicin

CONCLUCIONES.
La implementacin de la lista ligada tiene gran utilidad dado que al insertar o agregar algn elemento a la lista se puede hacer tanto al principio, final, o en cualquier posicin deseada incluso al utilizar la bsqueda eliminar o desplegar, mantienen un orden que uno desea,

También podría gustarte