Estructuras Lineales Estticas y Dinmicas 1 Pilas 2

  • Slides: 39
Download presentation
Estructuras Lineales, Estáticas y Dinámicas 1. Pilas 2. Colas 3. Listas enlazadas 1. Simples

Estructuras Lineales, Estáticas y Dinámicas 1. Pilas 2. Colas 3. Listas enlazadas 1. Simples 2. Dobles Estructura de Datos I Curso de Verano

Estructuras de Datos Almacenamiento Contiguo Lineales Estructuras de Datos Almacenamiento No Contiguo No lineales

Estructuras de Datos Almacenamiento Contiguo Lineales Estructuras de Datos Almacenamiento No Contiguo No lineales Estructura de Datos I Curso de Verano

Operaciones Básicas en Estructuras Lineales 1. Recorrido: Procesa c/elemento de la estructura. 2. Búsqueda:

Operaciones Básicas en Estructuras Lineales 1. Recorrido: Procesa c/elemento de la estructura. 2. Búsqueda: Recupera la posición de un elemento específico. 3. Inserción: Adiciona un nuevo elemento a la estructura. 4. Borrado: Elimina un elemento de la estructura. 5. Ordenación: Ordena los elementos de la estructura de acuerdo a los valores que contiene. 6. Mezcla: Combina 2 estructuras en una sola. Estructura de Datos I Curso de Verano

PILAS Definición: Estructura de datos lineal donde los elementos pueden ser añadidos o removidos

PILAS Definición: Estructura de datos lineal donde los elementos pueden ser añadidos o removidos solo por un extremo. Trabajan con filosofía LIFO (Last In- First Out ). Ejemplos: • Pila de platos • Pila de discos • Pila de llamadas a funciones • Pila de recursion • Pila de resultados parciales de formulas aritméticas, etc. Estructura de Datos I Curso de Verano

OPERACIONES BASICAS CON PILAS -PUSH (insertar). - Agrega un elementos a la pila en

OPERACIONES BASICAS CON PILAS -PUSH (insertar). - Agrega un elementos a la pila en el extremo llamado tope. -POP (remover). - Remueve el elemento de la pila que se encuentra en el extremo llamado tope. -VACIA. - Indica si la pila contiene o no contiene elementos. -LLENA. - Indica si es posible o no agregar nuevos elementos a la pila. Estructura de Datos I Curso de Verano

REPRESENTACIÓN DE PILAS: • Usando arreglos: Define un arreglo de una dimensión (vector) donde

REPRESENTACIÓN DE PILAS: • Usando arreglos: Define un arreglo de una dimensión (vector) donde se almacenan los elementos. 0 1 2 3 4 5 TOPE: Apunta hacia el elemento que se encuentra en el extremo de la pila. (inicialmente es -1). Estructura de Datos I Curso de Verano

Ejemplo Inicio: Insertar Eliminar A: B: C: elemento C A Tope -1 Tope B

Ejemplo Inicio: Insertar Eliminar A: B: C: elemento C A Tope -1 Tope B B B A A A Tope Estructura de Datos I Curso de Verano

Aplicaciones de Pilas EXPRESIONES ARITMETICAS: Una expresión aritmética contiene constantes, variables y operaciones con

Aplicaciones de Pilas EXPRESIONES ARITMETICAS: Una expresión aritmética contiene constantes, variables y operaciones con distintos niveles de precedencia. OPERACIONES : ^ potencia */ multiplicación, división +, - suma, resta Estructura de Datos I Curso de Verano

NOTACIONES: NOTACION INFIJA: Los operadores aparecen en medio de los operandos. A + B,

NOTACIONES: NOTACION INFIJA: Los operadores aparecen en medio de los operandos. A + B, A – 1, E/F, A * C , A ^ B , A + B + C, A+B-C NOTACION PREFIJA: El operador aparece antes de los operandos. + AB, - A 1, /EF, *AC, ^AB, +AB+C, +AB-C NOTACION POSTFIJA: El operador aparece al final de los operandos. AB+, A 1 -, EF/, AC*, AB^, AB+C+, AB+CEstructura de Datos I Curso de Verano

Aplicaciones de Pilas Funciones Recursivas • Las pilas pueden ser usadas para implementar la

Aplicaciones de Pilas Funciones Recursivas • Las pilas pueden ser usadas para implementar la recursión en programas. • Una función o procedimiento recursivo es aquel que se llama a si mismo. • Ejemplos: – – – Factorial Números de Fibonacci Torres de Hanoi Algoritmos de Ordenamiento de datos Etc. Estructura de Datos I Curso de Verano

Aplicaciones de Pilas Recursion // Funcion factorial public static int factorial(int n) { if

Aplicaciones de Pilas Recursion // Funcion factorial public static int factorial(int n) { if (n<=1) return 1; else return n*factorial(n-1); } // Funcion fibonacci public static int fib(int n) { if (n==1) return 0; else if (n==2) return 1; else return fib(n-1)+fib(n-2); } Estructura de Datos I Curso de Verano

Aplicaciones de Pilas Control de secuencia de programas. • Las pilas son requeridas para

Aplicaciones de Pilas Control de secuencia de programas. • Las pilas son requeridas para implementar el control de flujo de ejecución de un programa con subprogramas (funciones, procedimientos o métodos). – Subprogramas recursivos o no recursivos – Existen llamadas a ejecución de subprogramas. – Un subprograma se ejecuta completamente antes de retornar al punto donde fue llamado. Estructura de Datos I Curso de Verano

COLAS Definicion. Es una lista lineal de elementos en la que las operaciones de

COLAS Definicion. Es una lista lineal de elementos en la que las operaciones de insertar y eliminar se realizan en diferentes extremos de la cola. Trabajan con filosofía FIFO ( First In - First out), el primer elemento en entrar es el primer elemento en salir. Ejemplos: • Cola de automóviles esperando servicio en una gasolinera • Cola de clientes en una ventanilla del banco para pagar un servicio • Cola de programas en espera de ser ejecutados por una computadora. Estructura de Datos I Curso de Verano

TIPOS DE COLAS: • Cola simple: Estructura lineal donde los elementos salen en el

TIPOS DE COLAS: • Cola simple: Estructura lineal donde los elementos salen en el mismo orden en que llegan. • Cola circular: Representación lógica de una cola simple en un arreglo. • Cola de Prioridades: Estructura lineal en la cual los elementos se insertan en cualquier posición de la cola y se remueven solamente por el frente. • Cola Doble (Bicola): Estructura lineal en la que los elementos se pueden añadir o quitar por cualquier extremo de la cola (cola bidireccional). Estructura de Datos I Curso de Verano

Operaciones básicas en Colas Simples Insertar. - Almacena al final de la cola el

Operaciones básicas en Colas Simples Insertar. - Almacena al final de la cola el elemento que se recibe como paramétro. Eliminar. - Saca de la cola el elemento que se encuentra al frente. Vacía. - Regresa un valor booleano indicando si la cola tiene o no elementos (true – si la cola esta vacia, false – si la cola tiene al menos un elemento). Llena. - Regresa un valor booleano indicando si la cola tiene espacio disponible para insertar nuevos elementos ( true – si esta llena y false si existen espacios disponibles). Estructura de Datos I Curso de Verano

Operaciones: Estado de la cola: Inicio: Cola Vacía 1. - Insertar A A 2.

Operaciones: Estado de la cola: Inicio: Cola Vacía 1. - Insertar A A 2. - Insertar B A B 3. - Insertar C A B B C C D 4. - Remover Elemento 5. - Insertar D 6. - Remover Elemento C D Estructura de Datos I Curso de Verano

Implementación de Colas • Arreglo – con frente fijo. – con frente movible. –

Implementación de Colas • Arreglo – con frente fijo. – con frente movible. – circular. • Listas ligadas Estructura de Datos I Curso de Verano

Representación usando arreglos Las colas pueden ser representadas en arreglos de una dimensión (vector)

Representación usando arreglos Las colas pueden ser representadas en arreglos de una dimensión (vector) manteniendo dos variables que indiquen el FRENTE y FINAL de los elementos de la cola. 0 1 2 3 4 A F S D Z Frente 5 Final Estructura de Datos I Curso de Verano

 • Cuando la cola esta vacía las variables frente y final son nulos

• Cuando la cola esta vacía las variables frente y final son nulos y no es posible remover elementos. • Cuando la cola esta llena ( frente = 0 y final = n-1) no es posible insertar elementos nuevos a la cola. • Cuando se remueven elementos el frente puede incrementarse para apuntar al siguiente elemento de la cola (implementacion con frente movil) o los elementos en la cola pueden desplazarse una posicion adelante (implementación con frente fijo) • Recuperación de espacio: Cuando no hay espacios libres al final del arreglo los elementos pueden ser desplazados para desocupar posiciones en un extremo del arreglo o se puede manejar una estructura circular. Estructura de Datos I Curso de Verano

Ejemplo: Suponer que usamos un arreglo de 5 posiciones. Usando la representación de frente

Ejemplo: Suponer que usamos un arreglo de 5 posiciones. Usando la representación de frente fijo y frente movible. Frente A B C Final Frente Al remover un elemento: Final Frente B C Frente fijo B Final C Frente movible Estructura de Datos I Curso de Verano

Frente Final B C Frente B Final C Insertar elemento D: Frente Final B

Frente Final B C Frente B Final C Insertar elemento D: Frente Final B C D Frente B Final C D Estructura de Datos I Curso de Verano

Frente Insertar elemento E: Final Frente B C D E Frente B C D

Frente Insertar elemento E: Final Frente B C D E Frente B C D Final B C D E Insertar elemento F: Final Frente Final E F Insertar elemento G: B C D E F Error: Cola llena!!!! Estructura de Datos I Curso de Verano

Frente Cola Circular Cola inicial Final B C D Frente Final Es una representación

Frente Cola Circular Cola inicial Final B C D Frente Final Es una representación lógica de la cola en un arreglo. El frente y final son movibles. Cuando el frente o final llegan al extremo se regresan a la primera posición del arreglo. Remover C D Frente Final Insertar E C D Final E Frente Insertar F F C D E Estructura de Datos I Curso de Verano

Representación de colas: • Usando memoria estática: arreglos con tamaño fijo y frente fijo

Representación de colas: • Usando memoria estática: arreglos con tamaño fijo y frente fijo o movible o represntación circular. Final Frente B C D E F 0 3 4 1 2 • Usando memoria dinámica: Listas ligadas. Final B Frente C D E F Estructura de Datos I Curso de Verano

LISTAS ENLAZADAS 1. Simples (con enlace simple) 2. Dobles (doblemente enlazadas) • • Existe

LISTAS ENLAZADAS 1. Simples (con enlace simple) 2. Dobles (doblemente enlazadas) • • Existe diversas implementaciones de estas estructuras. Las variaciones mas comunes implementan listas circulares y listas con cabecera en sus dos variaciones (simples y dobles) Estructura de Datos I Curso de Verano

En lenguajes donde no se cuenta con memoria dinámica, las listas se implementan usando

En lenguajes donde no se cuenta con memoria dinámica, las listas se implementan usando arreglos. información 0 enlace Pan -1 Galletas 4 Jamón 7 Leche 0 1 inicio 2 • El arreglo contiene dos campos: uno para la información y otro para relacionar al siguiente elemento. 3 4 5 6 7 • La lista se recorre desde el inicio y hasta encontrar un elemento que contenga un enlace vacío. Estructura de Datos I Curso de Verano

LISTAS Una lista es una colección lineal de elementos llamados nodos donde el orden

LISTAS Una lista es una colección lineal de elementos llamados nodos donde el orden de los mismos se establece mediante punteros o referencias y existe un puntero/referencia especial llamado inicio para localizar al primer elemento. Ejemplos: inicio *Lista enlazada de 0 elementos Información enlace inicio * Lista enlazada de 4 elementos Estructura de Datos I Curso de Verano

Los nodos de las listas Un nodo se divide en 2 partes: • Información:

Los nodos de las listas Un nodo se divide en 2 partes: • Información: Contiene la información del elemento. • Enlace: Contiene la dirección del siguiente nodo de la lista. información enlace Nodo public class Nodo{ // atributos public String informacion; public Nodo enlace; // el constructor de nodos Nodo (String n){ informacion = n; enlace = null; } } Estructura de Datos I Curso de Verano

Almacenamiento de datos: 1. Arreglos: La relación lineal esta implícita en la relación física

Almacenamiento de datos: 1. Arreglos: La relación lineal esta implícita en la relación física de los elementos. Desventaja: Almacenamiento estático y tamaño fijo. 2. Elementos enlazados: Agrega a cada elemento un campo de enlace, no requieren almacenamiento contiguo en memoria, se pueden añadir y borrar elementos fácilmente. Estructura de Datos I Curso de Verano

Listas Simples • Colección lineal de elementos llamados nodos. • Existe un elemento llamado

Listas Simples • Colección lineal de elementos llamados nodos. • Existe un elemento llamado inicio que apunta al primer elemento de la lista. • Cada nodo contiene un campo de enlace que apunta al siguiente elemento. • El último elemento de la lista en su campo enlace apunta a nulo. • Al principio el apuntador inicio apunta a nulo. Estructura de Datos I Curso de Verano

Operaciones con listas simples • • • Insertar: Agrega un elemento a la lista.

Operaciones con listas simples • • • Insertar: Agrega un elemento a la lista. Eliminar: Retira un elemento de la lista. Buscar: Busca un elemento en la lista. Recorrer: Visita todos los elementos de la lista. Vacía: Indica si la lista contiene o no elementos. Tamaño: Indica el número de elementos de la lista. Con las operaciones anteriores, define una interfase para una lista simple que contiene datos de tipo String. Estructura de Datos I Curso de Verano

Tipos parametrizados • Define una clase para implementar una Pila/Cola usando una lista. Los

Tipos parametrizados • Define una clase para implementar una Pila/Cola usando una lista. Los datos que se almacenaran serán tipo Object. • Que requiere un programa que use estas estructuras? • Define una clase parametrizada para implementar una Pila usando una lista. • Define una clase parametrizada para implementar una Cola usando una lista. Estructura de Datos I Curso de Verano

LISTAS DOBLES Una lista doble es una estructura lineal de elementos llamados nodos los

LISTAS DOBLES Una lista doble es una estructura lineal de elementos llamados nodos los cuales contienen dos campos de enlace: uno al elemento anterior y otro al elemento siguiente de la lista. El primer nodo de la lista contiene nulo en su enlace al elemento anterior y el último nodo de la lista contiene nulo en su enlace al elemento siguiente. Estructura del Nodo: Anterior Información Siguiente public class Nodo{ // atributos Object informacion; Nodo anterior; Nodo siguiente; // el constructor de nodos Nodo (Object n){ informacion = n; anterior = null; siguiente = null; } } Estructura de Datos I Curso de Verano

Ejemplos: Lista Vacía inicio = fin = Lista de un solo elemento inicio A

Ejemplos: Lista Vacía inicio = fin = Lista de un solo elemento inicio A fin Lista de tres elementos inicio A B C fin Estructura de Datos I Curso de Verano

Operaciones con listas dobles • • Insertar: Agrega un elemento a la lista. Eliminar:

Operaciones con listas dobles • • Insertar: Agrega un elemento a la lista. Eliminar: Retira un elemento de la lista. Buscar: Busca un elemento en la lista. Recorrer hacia adelante: Visita todos los elementos de la lista desde el inicio hasta el final. • Recorrer hacia atrás: Visita todos los elementos de la lista desde el final hasta el inicio. • Vacía: Indica si la lista contiene o no elementos. • Tamaño: Indica el número de elementos de la lista. Con las operaciones anteriores, define una interfase para una lista doble que contiene datos de tipo Integer. Estructura de Datos I Curso de Verano

LISTAS ENLAZADAS CON CABECERA Es una lista enlazada que contiene un nodo especial llamado

LISTAS ENLAZADAS CON CABECERA Es una lista enlazada que contiene un nodo especial llamado nodo cabecera que se encuentra al inicio de la misma. NODO CABECERA. - Es un nodo especial que no contiene información, solo se utiliza para indicar el inicio de los elementos de la lista. La utilización de un nodo cabecera en listas enlazadas permiten que la implementación de los métodos de inserción y eliminación sea mas sencilla, ya que evitan tratar de forma explícita los casos especiales (insertar al inicio o eliminar el primer elemento). Sin embargo, requieren de un nodo extra en la lista (el nodo cabecera). Estructura de Datos I Curso de Verano

TIPOS DE LISTA ENLAZADA CON CABECERA: 1)LISTA CON CABECERA Y “TIERRA”: Es una lista

TIPOS DE LISTA ENLAZADA CON CABECERA: 1)LISTA CON CABECERA Y “TIERRA”: Es una lista enlazada con cabecera, donde el apuntador del último nodo contiene nulo. 2)LISTA CIRCULAR CON CABECERA: Es una lista enlazada con cabecera, donde el último nodo contiene un apuntador hacia la cabecera. Estructura de Datos I Curso de Verano

Representación: 1. - Lista simple c/cabecera y tierra: Inicio Nodo cabecera 2. - Lista

Representación: 1. - Lista simple c/cabecera y tierra: Inicio Nodo cabecera 2. - Lista circular c/cabecera: Nodo cabecera Inicio Estructura de Datos I Curso de Verano

Final de la presentación …Gracias

Final de la presentación …Gracias