Académique Documents
Professionnel Documents
Culture Documents
INTEGRANTES:
CURSO: TERCERO A
El previo ejercicio que aplicaremos en este proyecto basndonos en los manuales, tutoriales para tener un mejor entendimiento de listas simplemente enlazadas a la estructura de datos. La lista enlazada nos permite almacenar datos de una forma organizada, al igual que los vectores pero, a diferencia de estos, esta estructura es dinmica, por lo que no tenemos que saber "a priori" los elementos que puede contener con la finalidad de poder mostrar el men de tal manera que se pueda insertar o eliminar como lo desee el usuario.
OBJETIVOS
General
Mostrar por pantalla un men de acuerdo a como se escoja, ingresar, visualizar, eliminar los datos ingresados de tal forma que si no hay elementos o si se inserta un nmero incorrecto muestre por pantalla que la lista est vaca o que no est dentro de la lista
Especifico
y completo del
Como parte de este proyecto adjunto aqu un breve concepto en cuanto a lo que es listas enlazadas que se desarrolla en el mencionado anteriormente ya que es de gran uso en varios escenarios de programacin.
Insertar: inserta un nodo con dato x en la lista, pudiendo realizarse esta insercin al principio o final de la lista o bien en orden. Eliminar: elimina un nodo de la lista, puede ser segn la posicin o por el dato. Buscar: busca un elemento en la lista. Localizar: obtiene la posicin del nodo en la lista. Vaciar: borra todos los elementos de la lista
CODIGO
FACULTAD DE CIENCIAS INFORMATICAS 5 /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package proyecto_lista_Pinela;
class CNodo {
public CNodo() {
class CNodoUno {
class ListaSimplementeEnlazada {
CNodoUno cabeza;
public void InsertarDato(int dat) { CNodoUno NuevoNodo; CNodoUno ant = null, sig = null; NuevoNodo = new CNodoUno(); NuevoNodo.dato = dat; int ban = 0; if (cabeza == null) { cabeza = NuevoNodo; NuevoNodo.siguiente = null; } else { if (dat < cabeza.dato) { NuevoNodo.siguiente = cabeza; cabeza = NuevoNodo; } else { ant = cabeza; sig = cabeza; while (ban == 0) { ant = sig; sig = sig.siguiente;
if ((ant == null) || (sig == null)) { ban = 1; } else { if ((dat < sig.dato) && (ant.dato <= dat)) { ban = 1; } } } if (ant != null) { ant.siguiente = NuevoNodo; } NuevoNodo.siguiente = sig; } } }
public String EliminarDato(int dat) { String out = "Dato Eliminado de la Lista"; CNodoUno ant = null, sig = null; int ban = 0; if (Vacia()) {
out = "Lista esta Vaca "; } else { if (dat < cabeza.dato) { out = "Dato no se encuentra en la Lista "; } else if (dat == cabeza.dato) { cabeza = cabeza.siguiente; } else { ant = cabeza; sig = cabeza; while (ban == 0) { if ((ant.dato < dat) && (dat <= sig.dato)) { ban = 1; } else { if (dat > sig.dato) { ant = sig; sig = sig.siguiente; } else if (dat < sig.dato) { sig = ant; } if ((sig == null) || (ant == null)) { ban = 1;
} else if ((sig.dato == dat) || (ant.dato == dat)) { ban = 1; } } } if ((sig == null) || (ant == null)) { out = "Dato no se encuentra en la Lista "; } else if (dat == sig.dato) { ant.siguiente = sig.siguiente;
10
} else if (dat == ant.dato) { ant.siguiente = sig; } else { out = "Dato no se encuentra en la Lista "; } } } return out; }
11
public String VisualizarDatos() { String out = ""; CNodoUno Nodo; Nodo = cabeza; if (!Vacia()) { while (Nodo != null) { System.out.print(" " + Nodo.dato + " "); out += Nodo.dato + " | "; Nodo = Nodo.siguiente; } System.out.println(""); } else { System.out.print("Lista esta Vaca"); out = "Lista Vaca"; } return out; } }
public static void main(String args[]) { int opt = 0; do { opt = OpcionMenuPrincipal(); switch (opt) {
case 1: ListaSimplementeEnlazada lse = new ListaSimplementeEnlazada(); int op1; do { op1 = OpcionMenuSecundario("Lista Simplemente Enlazada"); switch (op1) { case 1: int i = IngresoDato();
lse.InsertarDato(i); break; case 2: if (lse.Vacia()) {//Si esta vacia no procesa JOptionPane.showMessageDialog(null, "Lista esta vacia Vacia"); break; } int e = IngresoDato(); String msg = lse.EliminarDato(e); JOptionPane.showMessageDialog(null, msg); break; case 3: String out = lse.VisualizarDatos(); JOptionPane.showMessageDialog(null, out); break; } } while (op1 != 4); break; case 2:
13
JOptionPane.showMessageDialog(null, "Fin del Proyecto de Lista.Simplemente.Enlazada "); JOptionPane.showMessageDialog(null, "PINELA HOLGUIN GENESIS \n", "Autora", JOptionPane.INFORMATION_MESSAGE); break; } } while (opt != 2); System.out.println(opt); }
14
static int OpcionMenuPrincipal() { boolean entradaValida = false; int op = 0; while (!entradaValida) { String menuPrincipal = "1.) Lista Simplemente Enlazada\n" + "2.) Salir"; String opcion = JOptionPane.showInputDialog(null, menuPrincipal, "Seleccione una Opcion", JOptionPane.QUESTION_MESSAGE); try {
op = Integer.parseInt(opcion); if (op < 1 || op > 4) { entradaValida = false; JOptionPane.showMessageDialog(null, "POR FAVOR VERIFIQUE EL NUMERO INGRESADO"); JOptionPane.showMessageDialog(null, "Solo numeros del 1 4"); } else { break; } } catch (Exception e) { JOptionPane.showMessageDialog(null, "Opcion Invalida"); } } return op; }
15
static int OpcionMenuSecundario(String Titulo) { boolean entradaValida = false; int op = 0; while (!entradaValida) {
String menuSecundario = "1.) Ingresar\n" + "2.) Eliminar\n" + "3.) Visualizar\n" //+ "4.) Buscar\n" + "4.) Atras"; String opcion = JOptionPane.showInputDialog(null, menuSecundario, Titulo, JOptionPane.QUESTION_MESSAGE); try { op = Integer.parseInt(opcion); if (op < 1 || op > 4) { entradaValida = false; JOptionPane.showMessageDialog(null, "Solo nmeros del 1 4"); } else { break; } } catch (Exception e) { JOptionPane.showMessageDialog(null, "Opcion Invalida"); } }
16
return op; }
17
static int IngresoDato() { boolean entradaValida = false; int op = 0; while (!entradaValida) { String msg = "Ingrese un nmero entero"; String opcion = JOptionPane.showInputDialog(null, msg, "Ingreso de Dato", JOptionPane.QUESTION_MESSAGE); try { op = Integer.parseInt(opcion); break; } catch (Exception e) { JOptionPane.showMessageDialog(null, "Opcion Invalida"); } } return op; } }
CONCLUSIONES
De acuerdo a el proyecto hemos llegado a la conclusin que el desarrollo y ejecucin de esta aplicacin ayudara al usuario mostrndole de una herramienta prctica , la cual le permite el ingreso, muestra(visualiza por pantalla), y elimina los datos insertados de una lista simplemente enlazada.