Descargar

Listas Simples Enlazadas

Enviado por Ronald Catari


  1. Objetivos
  2. Desarrollo del código
  3. Concepto de listas simples enlazadas
  4. Página Web
  5. Conclusiones
  6. Referencias

Objetivos

1.1 Objetivo General

Aprender y enseñar los diferentes ejemplos de listas enlazadas en java. Mediante una pagina web interactiva con animaciones.

  • Objetivo Especifico

  • Facilitar a los estudiantes el aprendizaje de los códigos desarrollados sobre listas enlazadas.

  • Proporcionar a través de la pagina web y video la explicación del funcionamiento del código de lista enlazadas.

Desarrollo del código

  • package listas_enlazadas;

  • import java.io.*;

  • import java.util.Scanner;

  • import javax.swing.JOptionPane;

  • public class Listas_enlazadas {

  •         public static class nodo

  •         {int dato;

  •         nodo sgte;

  •         }

  •     public static void main(String args []) throws IOException

  •         {

  •         nodo cabA = null;

  •         BufferedReader bf;

  •         int opc;

  •         bf = new BufferedReader(new InputStreamReader(System.in));

  •         do

  •             {   System.out.println(" MENU: n"

  •                  + "1.- CREAR UN NODOn"

  •                  + "2.- LA LISTA DE NODOS n"

  •                  + "3.- AGREGAR A CABECERAn"

  •                  + "4.- AGREGAR AL CENTROn"

  •                  + "5.- AGREGAR AL FINALn"

  •                  + "6.- QUITAR CABECERAn"

  •                  + "7.- QUITAR CENTROn"

  •                  + "8.- QUITAR ULTIMO NODOn"

  •                  + "0.- SALIR"

  •                   );

  •  

  •  

  •                 opc = Integer.parseInt(bf.readLine());

  •                 switch(opc)

  •                     {

  •                     case 1:cabA=crear_nuevo(cabA);break;

  •                     case 2:cabA=listado(cabA);break;

  •                     case 3:crear_nuevo(cabA);break;

  •                     case 4:add_centro(cabA);break;

  •                     case 5:add_final(cabA);break;

  •                     case 6:quitar_cab(cabA);break;

  •                     case 7:quitar_centro(cabA);break;

  •                     case 8:quitar_ultimo(cabA);break;

  •                     default:System.out.println("LA OPCION NO EXISTE");break;

  •                     }

  •             }while(opc!= 0);

  •         }

  • //PRIMER CASO…………………………………….

  • //crear nuevo nodo

  •     public static nodo crear_nuevo(){

  •         nodo z = new nodo();

  •         z.dato = leer("Ingrese dato: ");

  •         z.sgte = null;

  •         return z;

  • }//agregar un nuevo nodo

  •     public static nodo add(nodo cab){

  •         nodo nuevo;

  •         nuevo = crear_nuevo();

  •         nuevo.sgte = cab;

  •         return nuevo;

  •     }

  • //SEGUNDO CASO……………………………………..

  • // mostrar toda la lista de nodos

  •     public static void listado(nodo cab){

  •         while(cab != null){

  •             System.out.println(cab.dato);

  •             cab=cab.sgte;

  •         }

  •     }

  • //TERCER CASO…………………………………….

  • //crear nuevo nodo

  •     public static nodo crear_nuevo(){

  •         nodo z = new nodo();

  •         z.dato = leer("Ingrese dato: ");

  •         z.sgte = null;

  •         return z;

  • }//agregar un nodo a la cabecera

  •     public static nodo add(nodo cab){

  •         nodo nuevo;

  •         nuevo = crear_nuevo();

  •         nuevo.sgte = cab;

  •         return nuevo;

  •     }

  • //CUARTO CASO…………………………………….

  • //agregar nodo al centro

  • public static void add_centro(nodo cab){

  •     nodo nuevo;

  •     int c = contar(cab);//cuenta el numero de nodos de la lista

  •     if(c>=2){

  •         nuevo = new nodo();

  •         nuevo.dato = leer("ingree dato:");

  •         for(int i =1;i<(n/2);i++)

  •             cab = cab.sgte;

  •         nuevo.sgte = cab.sgte;

  •         cab.sgte = nuevo;

  •     }

  • }

  • //QUINTO CASO……………………………………

  • /agregar un nodo al final de la lista

  •     public static nodo add_final(nodo cab){

  •         nodo nuevo,copia;

  •         nuevo = new nodo();

  •         nuevo.dato = leer("Ingrese dato: ");

  •         nuevo.sgte = null;

  •         if(cab == null)

  •             cab = nuevo;

  •         else{

  •             copia = cab;

  •             while(copia.sgte!=null){

  •                 copia = copia.sgte;

  •             }

  •             copia.sgte = nuevo;

  •         }

  •         return cab;

  •     }

  • //SEXTO CASO……………………………………

  • //quitar nodo de la cabecera

  • public static nodo quitar_cab(nodo cab){

  •     return cab.sgte;

  • }

  • //SEPTIMO CASO…………………………………

  • //quitar nodo del centro de la lista

  • public static nodo quitar_centro(nodo cab){

  •     int c = contar(cab); //cuentar el numero de nodos de la lista

  •     if(cab.sgte==null)

  •         cab = null;

  •     else{

  •         if (c>=2){

  •             nodo copia = cab;

  •             for(int i=1;i<(n/2);i++)

  •                 copia = copia.sgte;

  •             copia.sgte = copia.sgte.sgte;

  •         }

  •     }

  •     return cab;

  • }

  • //OCTAVO CASO………………………………….

  • //quitar el ultimo nodo de la lista

  • public static nodo quitar_ultimo(nodo cab){

  •     if(cab.sgte == null)

  •         cab = null;

  •     else{

  •         nodo copia = cab;

  •         nodo aux = null;

  •         while(copia.sgte!=null){

  •             aux = copia;

  •             copia = copia.sgte;

  •         }

  •         aux.sgte = copia.sgte;

  •     }

  •     return cab;

  • }

Concepto de listas simples enlazadas

Una lista enlazada es una de las estructuras de datos fundamentales, y puede ser usada para implementar otras estructuras de datos. Consiste en una secuencia de nodos, en los que se guardan campos de datos arbitrarios y una o dos referencias, enlaces o punteros al nodo anterior o posterior. El principal beneficio de las listas enlazadas respecto a los vectores convencionales es que el orden de los elementos enlazados puede ser diferente al orden de almacenamiento en la memoria o el disco, permitiendo que el orden de recorrido de la lista sea diferente al de almacenamiento. Las listas enlazadas pueden ser implementadas en muchos lenguajes. Lenguajes tales como Lisp y Scheme tiene estructuras de datos ya construidas, junto con operaciones para acceder a las listas enlazadas. Lenguajes imperativos u orientados a objetos tales como C o C++ y Java, respectivamente, disponen de referencias para crear listas enlazadas. La lista enlazada básica es la lista enlazada simple la cual tiene un enlace por nodo. Este enlace apunta al siguiente nodo (o indica que tiene la dirección en memoria del siguiente nodo) en la lista, o al valor NULL o a la lista vacía, si es el último nodo.

edu.red

Página Web

edu.red

Esta es la primera parte de la pagina web: en donde se encuentra la ilustración en flash de los códigos realizados.

edu.red

Creación de la lista y los nodos.

edu.red

Listado de la lista de nodos.

edu.red

Agregar la cabecera al principio de la lista.

edu.red

Agrega un nodo al centro de la lista de nodos.

edu.red

Agrega un nodo al final de la lista de nodos.

edu.red

Quita la cabecera de la lista de nodos.

edu.red

Quita un nodo del centro de la lista de nodos.

edu.red

Quita el último elemento de la lista de nodos.

Conclusiones

El desarrollo del código fue probado exitosamente con gran éxito. Aprendiendo el funcionamiento de los también llamados punteros en java. Esto es un ejemplo de como se almacenan en memoria y como se los van creando, agregando y eliminando según el código realizado.

Referencias

http://www.youtube.com/watch?v=ATpZZr88WRg

http://www.tic-srl.net/estructura_de_datos_15/html_publico/

 

 

Autor:

Ronald Catari