- Objetivos
- Desarrollo del código
- Concepto de listas simples enlazadas
- Página Web
- Conclusiones
- 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.
Página Web
Esta es la primera parte de la pagina web: en donde se encuentra la ilustración en flash de los códigos realizados.
Creación de la lista y los nodos.
Listado de la lista de nodos.
Agregar la cabecera al principio de la lista.
Agrega un nodo al centro de la lista de nodos.
Agrega un nodo al final de la lista de nodos.
Quita la cabecera de la lista de nodos.
Quita un nodo del centro de la lista de nodos.
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