¡Bienvenidos a nuestra exposición!
Estructura de datos
Comenzar
JUAN DIEGO CELESTE JOEL LESLIE
ING. AMADO LOPEZ HILARIO
LISTAS
LISTAS
¿Que es y para que sirve?
Las listas son un tipo de colección que hereda de la interface collection, son una estructura de datos
que respeta el orden en el cual fueron agregados los elementos, también permiten registros repetidos.
Una Java List es sobre todo adecuada para escenarios en los que el tamaño del conjunto de datos no se
conoce de antemano o puede cambiar con el tiempo.
Esta interface o los objetos de esta representan una colección ordenada de elementos, en la cual se
tiene un control absoluto y preciso del lugar en el que se quiere insertar.
Por medio de la Lista nosotros tenemos la posibilidad de decir en que posición (al inicio, al final o
cualquier otro lugar) puede ser insertado o eliminado un elemento.
También es posible acceder a sus elementos a través de su índice; el cual representa la posición del
elemento en la lista y así se podría buscar un elemento en dicha lista.
La interface List se encuentra en el paquete java.util, algunas de las clases que implementa esta
interface son ArrayList, LinkedList, Vector.
Listas:
LOS MÉTODOS DE LAS LISTAS DE JAVA.
Las listas de Java pertenecen a la interfaz collections y deben
importarse desde el paquete java.util.
Las clases de implementación incluyen Java ArrayList, LinkedList, Vector y Stack. Puedes
declarar las distintas instancias de la lista de la siguiente manera:
He aquí algunos de los métodos más importantes utilizados en relación con las listas Java:
 int size(): determina la cantidad de elementos en una lista.
 void add(int index, E element): agrega un elemento en una posición específica.
 boolean isEmpty(): comprueba si la lista está vacía.
 void clear(): elimina todos los elementos de la lista
Descubrimientos
 boolean contains(Object o): devuelve el valor true si el objeto o está en la
lista.
 boolean add(E e): agrega el elemento especificado al final de la lista.
 boolean remove(Object o): elimina la primera aparición de un elemento
específico.
 E get(int index): devuelve el elemento en el índice indicado.
 E set(int index, E element): reemplaza o inserta un elemento en el índice
especificado.
 Object[] toArray(): devuelve un array con los elementos de la lista.
 List<E> subList(int fromIndex, int toIndex): captura todos los elementos
dentro del intervalo definido.
 default void replaceAll(UnaryOperator<E> operator): método estándar en
Java 8 que aplica operadores de Java a cada elemento y sustituye el
resultado por dicho elemento.
Listas
RECUPERAR Y MODIFICAR ELEMENTOS DE UNA LISTA JAVA.
Con el método get() se puede acceder a un elemento en un
índice concreto, mientras que con set() se puede intercambiar
y añadir un objeto en una posición deseada.
Como en Java se empieza a contar por el índice 0, obtenemos el
siguiente resultado:
ORDENAR UNA LISTA
Para ordenar una lista Java,
podemos utilizar el método.
sort() de la clase collections.
Recorremos la lista mediante
un bucle y mostramos los
elementos por orden en la
consola:
Los números de la lista Java
aparecen en la pantalla en
orden ascendente:
OPERACIONES BASICAS
En el contexto de las listas en estructuras de datos, las operaciones básicas
incluyen:
Inserción (Insert):
Al final: Añadir un elemento al final de la lista.
En una posición específica: Insertar un elemento en un índice
particular de la lista.
Eliminación (Delete/Remove):
Por valor: Eliminar la primera aparición de un elemento específico en
la lista.
Por posición: Eliminar un elemento en una posición específica de la
lista.
o Al final: Eliminar el último elemento de la lista.
Búsqueda (Search):
Por valor: Encontrar la primera posición (índice) de un elemento
específico en la lista.
Verificar existencia: Comprobar si un elemento está presente en la lista.
Acceso (Access):
Obtener el valor de un elemento en un índice particular de la lista
Actualización (Update):
Modificar el valor de un elemento en una posición específica de la lista.
Recorrido (Traversal):
Procesar o visitar cada elemento de la lista en secuencia,
generalmente desde el primer hasta el último elemento.
Concatenación (Concatenate):
Unir dos listas para formar una nueva lista que contenga los
elementos de ambas.
División (Split):
Dividir la lista en dos o más sublistas según algún criterio, como un
índice particular o un valor delimitador.
Ordenación (Sort):
Reorganizar los elementos de la lista en un orden específico, como
ascendente o descendente.
Obtener Tamaño (Size/Length):
Determinar el número de elementos presentes en la lista.
Reversa (Reverse):
Invertir el orden de los elementos en la lista.
Vaciar (Clear):
Eliminar todos los elementos de la lista, dejándola vacía.
Estas operaciones permiten manipular listas de manera eficiente y son
fundamentales en muchas aplicaciones que utilizan estructuras de
datos.
TIPOS DE LISTAS
LISTAS ENLAZADA
Las listas son estructuras de datos fundamentales en programación
que permiten almacenar y gestionar colecciones de elementos.
Existen diferentes tipos de listas, cada una con sus características,
ventajas y desventajas. A continuación, te presento una descripción
detallada de tres tipos de listas: simplemente enlazadas,
doblemente enlazadas y circulares.
LISTAS SIMPLEMENTE ENLASADAS
Una lista simplemente enlazada es una colección de nodos en la
que cada nodo contiene un valor (o dato) y una referencia (o
enlace) al siguiente nodo en la lista. El primer nodo se llama
"cabeza" de la lista, y el último nodo apunta a null (o None,
dependiendo del lenguaje de programación), lo que indica el final
de la lista.
Estructura de un nodo
CARACTERISTICAS
 Acceso Secuencial: Para acceder a un elemento en una posición
específica, es necesario recorrer la lista desde la cabeza.
 Inserciones y Eliminaciones Eficientes: Se pueden realizar
inserciones y eliminaciones de nodos de manera eficiente,
especialmente al principio de la lista, sin necesidad de mover otros
elementos.
 Uso de Memoria: Cada nodo requiere memoria adicional para
almacenar el enlace al siguiente nodo.
Ventajas
 Simplicidad en la implementación.
 Flexibilidad en la gestión de la memoria, ya que no se necesita
definir un tamaño fijo.
Desventajas
 Acceso lento a elementos en posiciones intermedias.
 No es fácil acceder a los nodos anteriores a un nodo dado (no
se puede retroceder).
LISTAS DOBLEMENTE ENLAZADAS
una lista doblemente enlazada es una colección de nodos en la que
cada nodo contiene un valor y dos referencias: una al siguiente nodo
y otra al nodo anterior. Esto permite un recorrido en ambas
direcciones (adelante y atrás).
Las listas doblemente enlazadas son estructuras de datos
semejantes a las listas enlazadas simples.
La asignación de memoria es hecha al momento de la ejecución
En cambio, en relación a la lista enlazada simple el enlace entre
los elementos se hace gracias a dos punteros (uno que apunta hacia
el elemento anterior y otro que apunta hacia el elemento siguiente).
El puntero anterior del primer elemento debe apuntar hacia NULL (el
inicio de la lista).
El puntero siguiente del último elemento debe apuntar hacia NULL (el
fin de la lista).
Para acceder a un elemento, la lista puede ser recorrida en ambos
sentidos:
 Comenzando por el inicio, el puntero siguiente permite el
desplazamiento hacia el próximo elemento.
 Comenzando por el final, el puntero anterior permite el
desplazamiento hacia el elemento anterior.
LISTAS CIRCULARES
Las listas circulares enlazadas son listas que funcionan como un bucle,
su nodo de inicio apunta a la última posición de la lista y el ultimo nodo
apunta a la primera posición de la lista.
Características
 No hay un final explícito: En una lista circular, no hay un nodo que
apunte a null, lo que permite un recorrido infinito por la lista.
 Puede ser dinámica: Permite recorrer y operar continuamente sin
necesidad de llegar a un final.
Ventajas
 Ideal para aplicaciones que requieren recorridos continuos, como
simulaciones o juegos.
 Útil en algoritmos que necesitan un procesamiento cíclico (por
ejemplo, en el algoritmo de Josephus).
Desventajas
 Puede ser más difícil de implementar y manejar, especialmente al
detectar el final de la lista.
Hay que tener cuidado con los bucles infinitos al recorrer la lista.
APLICACIONES
Aplicaciones
 Dos aplicaciones relevantes de las listas son:
 Representación de polinomios.
 Resolución de Colisiones (hash).
En general, las listas son muy útiles para las aplicaciones en las que se requiere
dinamismo en el crecimiento y una estructura de datos reducida para el
almacenamiento de información.
Representación de polinomios.
 Las listas se pueden emplear para almacenar los coeficientes diferentes de cero del
polinomio, junto al exponente. Así, por ejemplo, dado el polinomio: o
 Su representación mediante listas es la siguiente
Representación de polinomios.
El campo INFORMACIÓN de cada nodo de la lista contendrá dos campos: el Coeficiente y
el Exponente.
Solución de Colisiones (Hash)
 Los métodos de búsqueda interna más importantes son: o
 Secuencial o lineal.
 Binaria.
 Por transformación de claves o hash.
 Árboles de búsqueda.
Solución de Colisiones (Hash)
 Por transformación de claves o hash.
 Permite aumentar la velocidad de búsqueda sin necesidad de tener los elementos ordenados.
 El tiempo de búsqueda es independiente del número de elementos del arreglo.
 Permite localizar un dato de forma directa, es decir, sin tener que recorrer algunos elementos
antes de encontrarlo.
 Utiliza una función que convierte una clave dada en una dirección, índice, dentro del arreglo.
Solución de Colisiones (Hash)
 Por transformación de claves o hash.
 La función Hash aplicada a la clave genera un índice del arreglo que permite tener acceso de
manera directa al elemento.
 Esta función Hash debe ser simple de calcular y asignar direcciones de manera uniforme, es
decir, asignar posiciones distintas a dos claves distintas.
 Si ocurre la asignación de una misma dirección a dos o mas claves
distintas, se genera una colisión.
Solución de Colisiones (Hash)
 Solución de colisiones por método de Encadenamiento
 Consiste en que cada elemento del arreglo tenga un apuntador a
una lista ligada, la cual se irá generando y almacenará los valores
que colisionan.

Estructura de datos programacion internos

  • 1.
    ¡Bienvenidos a nuestraexposición! Estructura de datos Comenzar JUAN DIEGO CELESTE JOEL LESLIE ING. AMADO LOPEZ HILARIO
  • 2.
  • 3.
    LISTAS ¿Que es ypara que sirve? Las listas son un tipo de colección que hereda de la interface collection, son una estructura de datos que respeta el orden en el cual fueron agregados los elementos, también permiten registros repetidos. Una Java List es sobre todo adecuada para escenarios en los que el tamaño del conjunto de datos no se conoce de antemano o puede cambiar con el tiempo. Esta interface o los objetos de esta representan una colección ordenada de elementos, en la cual se tiene un control absoluto y preciso del lugar en el que se quiere insertar. Por medio de la Lista nosotros tenemos la posibilidad de decir en que posición (al inicio, al final o cualquier otro lugar) puede ser insertado o eliminado un elemento. También es posible acceder a sus elementos a través de su índice; el cual representa la posición del elemento en la lista y así se podría buscar un elemento en dicha lista. La interface List se encuentra en el paquete java.util, algunas de las clases que implementa esta interface son ArrayList, LinkedList, Vector.
  • 4.
    Listas: LOS MÉTODOS DELAS LISTAS DE JAVA. Las listas de Java pertenecen a la interfaz collections y deben importarse desde el paquete java.util. Las clases de implementación incluyen Java ArrayList, LinkedList, Vector y Stack. Puedes declarar las distintas instancias de la lista de la siguiente manera: He aquí algunos de los métodos más importantes utilizados en relación con las listas Java:  int size(): determina la cantidad de elementos en una lista.  void add(int index, E element): agrega un elemento en una posición específica.  boolean isEmpty(): comprueba si la lista está vacía.  void clear(): elimina todos los elementos de la lista
  • 5.
    Descubrimientos  boolean contains(Objecto): devuelve el valor true si el objeto o está en la lista.  boolean add(E e): agrega el elemento especificado al final de la lista.  boolean remove(Object o): elimina la primera aparición de un elemento específico.  E get(int index): devuelve el elemento en el índice indicado.  E set(int index, E element): reemplaza o inserta un elemento en el índice especificado.  Object[] toArray(): devuelve un array con los elementos de la lista.  List<E> subList(int fromIndex, int toIndex): captura todos los elementos dentro del intervalo definido.  default void replaceAll(UnaryOperator<E> operator): método estándar en Java 8 que aplica operadores de Java a cada elemento y sustituye el resultado por dicho elemento.
  • 6.
    Listas RECUPERAR Y MODIFICARELEMENTOS DE UNA LISTA JAVA. Con el método get() se puede acceder a un elemento en un índice concreto, mientras que con set() se puede intercambiar y añadir un objeto en una posición deseada.
  • 7.
    Como en Javase empieza a contar por el índice 0, obtenemos el siguiente resultado: ORDENAR UNA LISTA Para ordenar una lista Java, podemos utilizar el método. sort() de la clase collections. Recorremos la lista mediante un bucle y mostramos los elementos por orden en la consola: Los números de la lista Java aparecen en la pantalla en orden ascendente:
  • 8.
  • 9.
    En el contextode las listas en estructuras de datos, las operaciones básicas incluyen: Inserción (Insert): Al final: Añadir un elemento al final de la lista. En una posición específica: Insertar un elemento en un índice particular de la lista. Eliminación (Delete/Remove): Por valor: Eliminar la primera aparición de un elemento específico en la lista. Por posición: Eliminar un elemento en una posición específica de la lista. o Al final: Eliminar el último elemento de la lista.
  • 10.
    Búsqueda (Search): Por valor:Encontrar la primera posición (índice) de un elemento específico en la lista. Verificar existencia: Comprobar si un elemento está presente en la lista. Acceso (Access): Obtener el valor de un elemento en un índice particular de la lista Actualización (Update): Modificar el valor de un elemento en una posición específica de la lista.
  • 11.
    Recorrido (Traversal): Procesar ovisitar cada elemento de la lista en secuencia, generalmente desde el primer hasta el último elemento. Concatenación (Concatenate): Unir dos listas para formar una nueva lista que contenga los elementos de ambas. División (Split): Dividir la lista en dos o más sublistas según algún criterio, como un índice particular o un valor delimitador. Ordenación (Sort): Reorganizar los elementos de la lista en un orden específico, como ascendente o descendente.
  • 12.
    Obtener Tamaño (Size/Length): Determinarel número de elementos presentes en la lista. Reversa (Reverse): Invertir el orden de los elementos en la lista. Vaciar (Clear): Eliminar todos los elementos de la lista, dejándola vacía. Estas operaciones permiten manipular listas de manera eficiente y son fundamentales en muchas aplicaciones que utilizan estructuras de datos.
  • 13.
  • 14.
    LISTAS ENLAZADA Las listasson estructuras de datos fundamentales en programación que permiten almacenar y gestionar colecciones de elementos. Existen diferentes tipos de listas, cada una con sus características, ventajas y desventajas. A continuación, te presento una descripción detallada de tres tipos de listas: simplemente enlazadas, doblemente enlazadas y circulares. LISTAS SIMPLEMENTE ENLASADAS Una lista simplemente enlazada es una colección de nodos en la que cada nodo contiene un valor (o dato) y una referencia (o enlace) al siguiente nodo en la lista. El primer nodo se llama "cabeza" de la lista, y el último nodo apunta a null (o None, dependiendo del lenguaje de programación), lo que indica el final de la lista. Estructura de un nodo
  • 15.
    CARACTERISTICAS  Acceso Secuencial:Para acceder a un elemento en una posición específica, es necesario recorrer la lista desde la cabeza.  Inserciones y Eliminaciones Eficientes: Se pueden realizar inserciones y eliminaciones de nodos de manera eficiente, especialmente al principio de la lista, sin necesidad de mover otros elementos.  Uso de Memoria: Cada nodo requiere memoria adicional para almacenar el enlace al siguiente nodo.
  • 16.
    Ventajas  Simplicidad enla implementación.  Flexibilidad en la gestión de la memoria, ya que no se necesita definir un tamaño fijo. Desventajas  Acceso lento a elementos en posiciones intermedias.  No es fácil acceder a los nodos anteriores a un nodo dado (no se puede retroceder).
  • 17.
    LISTAS DOBLEMENTE ENLAZADAS unalista doblemente enlazada es una colección de nodos en la que cada nodo contiene un valor y dos referencias: una al siguiente nodo y otra al nodo anterior. Esto permite un recorrido en ambas direcciones (adelante y atrás). Las listas doblemente enlazadas son estructuras de datos semejantes a las listas enlazadas simples. La asignación de memoria es hecha al momento de la ejecución En cambio, en relación a la lista enlazada simple el enlace entre los elementos se hace gracias a dos punteros (uno que apunta hacia el elemento anterior y otro que apunta hacia el elemento siguiente).
  • 18.
    El puntero anteriordel primer elemento debe apuntar hacia NULL (el inicio de la lista). El puntero siguiente del último elemento debe apuntar hacia NULL (el fin de la lista). Para acceder a un elemento, la lista puede ser recorrida en ambos sentidos:  Comenzando por el inicio, el puntero siguiente permite el desplazamiento hacia el próximo elemento.  Comenzando por el final, el puntero anterior permite el desplazamiento hacia el elemento anterior.
  • 19.
    LISTAS CIRCULARES Las listascirculares enlazadas son listas que funcionan como un bucle, su nodo de inicio apunta a la última posición de la lista y el ultimo nodo apunta a la primera posición de la lista. Características  No hay un final explícito: En una lista circular, no hay un nodo que apunte a null, lo que permite un recorrido infinito por la lista.  Puede ser dinámica: Permite recorrer y operar continuamente sin necesidad de llegar a un final.
  • 20.
    Ventajas  Ideal paraaplicaciones que requieren recorridos continuos, como simulaciones o juegos.  Útil en algoritmos que necesitan un procesamiento cíclico (por ejemplo, en el algoritmo de Josephus). Desventajas  Puede ser más difícil de implementar y manejar, especialmente al detectar el final de la lista. Hay que tener cuidado con los bucles infinitos al recorrer la lista.
  • 21.
  • 22.
    Aplicaciones  Dos aplicacionesrelevantes de las listas son:  Representación de polinomios.  Resolución de Colisiones (hash). En general, las listas son muy útiles para las aplicaciones en las que se requiere dinamismo en el crecimiento y una estructura de datos reducida para el almacenamiento de información. Representación de polinomios.  Las listas se pueden emplear para almacenar los coeficientes diferentes de cero del polinomio, junto al exponente. Así, por ejemplo, dado el polinomio: o  Su representación mediante listas es la siguiente Representación de polinomios. El campo INFORMACIÓN de cada nodo de la lista contendrá dos campos: el Coeficiente y el Exponente. Solución de Colisiones (Hash)
  • 23.
     Los métodosde búsqueda interna más importantes son: o  Secuencial o lineal.  Binaria.  Por transformación de claves o hash.  Árboles de búsqueda. Solución de Colisiones (Hash)  Por transformación de claves o hash.  Permite aumentar la velocidad de búsqueda sin necesidad de tener los elementos ordenados.  El tiempo de búsqueda es independiente del número de elementos del arreglo.  Permite localizar un dato de forma directa, es decir, sin tener que recorrer algunos elementos antes de encontrarlo.  Utiliza una función que convierte una clave dada en una dirección, índice, dentro del arreglo. Solución de Colisiones (Hash)  Por transformación de claves o hash.  La función Hash aplicada a la clave genera un índice del arreglo que permite tener acceso de manera directa al elemento.  Esta función Hash debe ser simple de calcular y asignar direcciones de manera uniforme, es decir, asignar posiciones distintas a dos claves distintas.
  • 24.
     Si ocurrela asignación de una misma dirección a dos o mas claves distintas, se genera una colisión. Solución de Colisiones (Hash)  Solución de colisiones por método de Encadenamiento  Consiste en que cada elemento del arreglo tenga un apuntador a una lista ligada, la cual se irá generando y almacenará los valores que colisionan.