Está en la página 1de 16

Estructuras de Datos

Datos Simple
(Cada variable representa un elemento)

Estandar

int, float, double char bool

Esttica

Vectores Matrices Registros Archivos Pilas Colas Listas Enlazadas

Estructuras De Datos
(Cada variable puede representar multiples datos)

Lineales Dinmicas No Lineales

Arboles Grafos

LISTAS ENLAZADAS

Listas Enlazadas
Estructuras Dinmicas Se llaman as porque crecen y decrecen segn los elementos que contengan. Estos elementos deben ser creados y luego enlazados como parte de la estructura dinmica.

Listas Enlazadas
Las estructuras dinmicas de datos se pueden dividir en dos grandes grupos: Lineales Pilas Colas Listas enlazadas No lineales rboles Grafos

Listas Enlazadas
Listas Las listas son una secuencia de elementos llamados NODOS que se encuentran enlazados o conectados cada uno con los siguientes y/o anterior, mediante un apuntador que sirve de ENLACE. Todos los nodos de una lista son del mismo tipo de dato CLASE.

Listas Enlazadas
Listas Enlazadas Los inconvenientes de las listas contiguas se eliminan con las listas enlazadas. Se pueden almacenar los elementos de una lista lineal en posiciones de memoria que no sean contiguas o adyacentes. Una lista enlazada o encadenada es un conjunto de elementos en los que cada elemento contiene la posicin o direccin del siguiente elemento de la lista.

Listas Enlazadas
Cada elemento de la lista enlazada debe tener al menos dos campos: un campo que tiene el valor del elemento y un campo enlace ,link que contiene la posicin del siguiente elemento, es decir, su conexin, enlace o encadenamiento.

Listas Enlazadas
Una lista enlazada, es un vector de dimensin variable. Esto es que solamente utiliza la cantidad de elementos mnima necesaria. Por ejemplo, supongamos que tenemos un programa que gestiona los datos de los alumnos de una asignatura y el programa esta diseado para una cantidad mxima de 50 plazas. Si en un ao solamente hay 4 alumnos, no hay necesidad de declarar un vector de 50 elementos si solo vamos a usar 4, la memoria que necesitara es mucho menor si se manejan las listas que si utilizamos vectores.

package listas; class nodo{ int dato; nodo sgte; public nodo(int dato){ this.dato = dato; this.sgte = null; } public nodo(int dato, nodo siguiente){ this.dato = dato; this.sgte = siguiente; }

public int getDato(){ return dato; } public void setDato(int dato){ this.dato = dato; }
}

public class Listas { public static void main(String[] args) { nodo nodo1 = new nodo(5); nodo nodo2 = new nodo(10); nodo nodo3 = new nodo(15);
nodo1.sgte = nodo2; nodo2.sgte = nodo3; //Mostrar en pantalla los datos de la Lista Enlazada nodo nodoAux; nodoAux = nodo1; while(nodoAux!=null){ System.out.println(nodoAux.dato); nodoAux = nodoAux.sgte; } } }

class Lista{ ListaNodo primerNodo; ListaNodo ultimoNodo; public Lista(){ primerNodo = null; ultimoNodo = null; } public void Insertar(String data){ if (EstaVacia()){ primerNodo = ultimoNodo = new ListaNodo(data,null); } else{ primerNodo = new ListaNodo(data,primerNodo); } }

public void Eliminar(String data){ if (EstaVacia()){ System.out.println("La Lista esta vacia"); } else{ ListaNodo Aux = primerNodo; if (Aux.dato.equals(data)){ System.out.println("1"); primerNodo = Aux.nextNodo; } else{ System.out.println("2"); while(Aux.nextNodo!=null && Aux.dato.equals(data)){ Aux = Aux.nextNodo; } if (Aux.nextNodo!=null){ Aux.nextNodo = Aux.nextNodo.nextNodo; } } } }

public void MostrarLista(){ if (EstaVacia()){ System.out.println("La Lista esta vacia."); } else{ ListaNodo NodoActual = primerNodo; while(NodoActual!=null){ System.out.println(NodoActual.dato); NodoActual = NodoActual.nextNodo; } } } public boolean EstaVacia(){ if (primerNodo==null){ return true; } else{ return false; } } }

public class Main { public static void main(String[] args) { Lista x = new Lista(); x.Insertar("Juan"); x.Insertar("Jorge"); x.MostrarLista(); } }

Listas Enlazadas
Este sistema tiene mltiples ventajas. Primero, solamente usa la cantidad de memoria estrictamente necesaria. Otra ventaja es que el limite de elementos no esta definido, esto quiere decir que puede haber tantos elementos como memoria que pueda conservarlos. Adems de tener ventajas, tambin tiene sus desventajas. Por ejemplo, la forma de aadir o quitar elementos hay que definirla a travs de mtodos, al igual que acceder a un elemento para utilizar su informacin. A la hora de acceder a un elemento, hay que buscarlo antes de forma secuencial, es decir, de principio a fin, y esto en una lista larga con muchos datos en cada elemento puede ralentizar el programa bastante.

También podría gustarte