• No se han encontrado resultados

EstructuraDeDatosLineales

N/A
N/A
Protected

Academic year: 2020

Share "EstructuraDeDatosLineales"

Copied!
33
0
0

Texto completo

(1)

Estructura de Datos

Lineales

Curso: Algoritmos y Estructura de Datos – Grupo A Docente: I.S. José Castillo Zumarán

(2)

Indice

Abstracción de datos

Utilización de un TDA

Tipos de estructura de datos lineales

Listas

Pilas

(3)

Abstracción de datos

 La abstracción nos permite simplificar el análisis y

resolución de un problema separando las características que son relevantes de aquellas que no lo son.

 Una abstracción de datos, también denominada tipo de

dato abstracto, es un nuevo tipo de dato más un conjunto de operaciones que permiten manipular objetos de dicho tipo.

 La utilización de los TDA da lugar a programas que son:

más legibles

(4)

Utilización de un TDA

Para poder utilizar un

TDA

, sin saber como está

representado internamente, es necesario

disponer de su especificación.

Un

TDA

se divide en

dos partes

:

(5)

Estructuras de Datos

Estructuras

de Datos

Lineales

No lineales

Almacenamiento

Contiguo

(6)

Tipos de estructura de datos

lineales

Listas

Pilas y

Colas

Estas estructuras de datos pueden ser:

Estáticas

(implementado con array) o

Dinámicas

(implementado con listas

(7)

Listas

 Son estructuras de datos secuenciales de 0 o más elementos

de un tipo dado almacenados en memoria. Son estructuras lineales, donde cada elemento de la lista, excepto el primero, tiene un único predecesor y cada elemento de la lista, excepto el último, tiene un único sucesor.

 El número de elementos de la lista se llama longitud. Si tiene

0 elementos se llama lista vacía.

 En una lista podemos añadir nuevos elementos o suprimirlos

(8)

Tipos de listas

 No enlazada (array)  Enlazada (objetos)

 Doblemente enlazada

(anterior apunta al siguiente y viceversa)

 Circular (el último

apunta al primero) A la vez pueden estar:

(9)

Operaciones sobre Listas

Algunas operaciones

son:

Inserción

Supresión

Recorrido

Ordenación

(10)

Aplicación de las listas

 Las listas son comunes en la vida diaria: listas de

alumnos, listas de clientes, listas de espera, listas de distribución de correo, etc.

 Las listas son estructuras de datos muy útiles para los casos en los que se quiere almacenar información de la que no se conoce su tamaño con antelación.

 También son valiosas para las situaciones en las que el volumen de datos se puede incrementar o

decrementar dinámicamente durante la ejecución del programa.

(11)

Listas Enlazadas

Una lista enlazada está formada por una

colección de elementos (denominados

nodos

)

tales que cada uno de ellos almacena dos

valores: un valor de la lista y un

puntero

o

referencia

que indica la posición del nodo que

contiene el siguiente valor de la lista.

Es necesario almacenar al menos la posición

del primer elemento.

Es dinámica, su tamaño puede cambiar

(12)

Nodos de una lista enlazada

 Una lista enlazada es una sucesión de nodos en la

que a partir de un nodo se puede acceder al que ocupa la siguiente posición en la lista. Esta característica nos indica que el acceso a las listas es secuencial y no indexado, por lo que para acceder al último elemento de la lista hay que recorrer los n-1 elementos previos (n es el tamaño de la lista).

 Para que un nodo pueda acceder al siguiente y la

(13)

Esquema de una lista enlazada

De esta forma un nodo se podría representar

esquemáticamente así:

En el campo información se almacena el

objeto a guardar y nodo siguiente mantendrá

la conexión con el siguiente nodo.

Información Nodo siguiente

Información

Nodo siguiente

Información

Nodo siguiente

Información

(14)

Lista doblemente enlazada

 Son listas que tienen un enlace con el elemento

siguiente y con el anterior. Una ventaja que tienen es que pueden recorrerse en ambos sentidos, ya sea para efectuar una operación con cada elemento o para

insertar, actualizar y borrar. La otra ventaja es que las búsquedas son algo más rápidas puesto que no hace falta hacer referencia al

elemento anterior. Su inconveniente es que

(15)

Listas circulares (enlazadas)

Son listas en el que el último elemento tiene

una referencia (enlace) con el primer

elemento (cabecera).

Pueden ser listas simples o doblemente

(16)

Pilas

Es un tipo lineal de datos,

secuencia de elementos de un

tipo, una estructura tipo LIFO

(Last In First Out) último en

entrar primero en salir.

Son un subconjunto de las

listas, en donde las

eliminaciones e inserciones se

dan en un solo extremo, de

manera tal que, el último

(17)

Operaciones básicas con pilas

Crear la estructura

Crear la estructura

Insertar

Insertar

Eliminar

Eliminar

Obtener un elemento

Obtener un elemento

Vacíar

Vacíar

(18)

Aplicaciones de las pilas

Se utilizan en:

 Compiladores (parsers: reconocedores sintácticos de

los compiladores).

 Programación de sistemas (para registrar llamadas a

subprogramas, y recuperar los datos anteriores, o recuperar los parámetros).

 Recuperación de elementos en orden inverso al que

fueron colocados (en un depósito, una pila de contenedores, sillas, etc. ).

(19)

Notación polaca (postfija)

 Para evaluar la expresión aritmética de:

 se sigue el indicado con las flechas

(según la prioridad de los operadores y el uso de los paréntesis)

 Para eliminar esta dificultad, se hace una traducción de las

expresiones aritméticas a notación postfija, que se llama

(20)

Notación postfija

 La idea básica detrás de la notación de cadenas polacas

es que los operadores se escriben al final y no en medio de las expresiones. De manera que A + B se escribiría como A B +. En esta forma, el operador + se considera como una orden para sumar los valores de las dos variables que lo preceden inmediatamente. Un ejemplo puede ser:

 La clave de la traducción de notación infija a posfija es la

(21)

Notación postfija

 Reglas básicas para convertir expresiones infijas a posfijas:

1. Si el elemento es un ‘(‘ se coloca directamente en la pila de operadores.

2. Si el elemento es un ‘)’, los operadores de la pila se transfieren uno a uno, al extremo derecho de la expresión posfija hasta llegar a un ‘(‘. Este se saca pero no va a la salida.

3. Si el elemento localizado es una variable, se coloca inmediatamente en el extremo derecho de la expresión posfija que se está creando.

(22)

Conversión infija a postfija

Ecuación cuadrática

En infija

( ‘-b’ + ( b ^ 2 – 4 * a * c ) ^ ( 1 / 2 ) ) / ( 2 * a )

En postfija

(23)

Algoritmo para evaluar una

expresión postfija

1. Implementar la pila

2. Repetir hasta encontrar el fin de la expresión

postfija

 Tomar un carácter.

 Si el carácter es un operando colocarlo en la pila.

 Si el carácter es un operador entonces sacar los dos

valores del tope de la pila (operando2 operando1), aplicar el operador (operando1 operador operando2) y colocar el resultado en el nuevo tope de la pila.

(24)

Recursividad

 Algoritmo para hallar el factorial de un número

mediante pilas leer n;

   mientras n > 1 pila.apilar (n);       n = n-1;

fin mientras factorial = 1;

   mientras pila no está vacía

(25)

Encapsulación en pilas y colas

Al igual que con las colas,

la implementación de las

pilas suele encapsularse,

es decir, basta con conocer

las operaciones de

manipulación de la pila

para poder usarla,

olvidando su

(26)

Colas

 Es un tipo de dato lineal con estructura FIFO (First In, First Out), el primero que entra es el primero que sale.

 Las colas son un subconjunto de las listas, en donde las

eliminaciones se dan al comienzo de la lista y las inserciones al final.

(27)

Aplicaciones de las colas

Las colas, al igual que las pilas, resultan de aplicación

habitual en muchos problemas informáticos.

Su utilización es infinita, desde la simulación de una

cola formada frente a un cajero automático, hasta la

cola de impresión.

Quizás la aplicación más común de las colas es la

organización de tareas de un ordenador. Los

(28)

Tipos de colas

Colas de prioridad

: En ellas, los elementos se

atienden en el orden indicado por una prioridad

asociada a cada uno. Si varios elementos tienen

la misma prioridad, se atenderán de modo

convencional según la posición que ocupen.

Existen dos formas de implementación:

Añadir un campo a cada nodo con su prioridad.

Resulta conveniente mantener la cola ordenada por orden de prioridad.

Crear tantas colas como prioridades haya, y

(29)

Cola de prioridad

Una cola de prioridad es una

generalización de los conceptos de pila y

cola en la que, tras entrar en la cola, la

salida de los elementos no se basa

(30)

Algunas aplicaciones de

las colas de prioridad

 Gestión de procesos en un sistema operativo. Los procesos

no se ejecutan uno tras otro en base a su orden de llegada. Algunos procesos deben tener prioridad (por su mayor

importancia, por su menor duración, etc.) sobre otros.

 Implementación de algoritmos voraces, los cuales

proporcionan soluciones globales a problemas basándose en decisiones tomadas sólo con información local. La

determinación de la mejor opción local suele basarse en una cola de prioridad.

Algunos algoritmos sobre grafos, como la obtención de caminos o

(31)

Tipos de colas

Bicolas: son colas en donde los nodos se pueden añadir y quitar por ambos extremos; se les llama DEQUE (Double Ended QUEue). Para representar las bicolas lo podemos hacer con un array circular con Ini y Fin que apunten a cada uno de los extremos. Existen dos variantes:

 Bicolas de entrada restringida: Son aquellas donde la inserción sólo se hace por el final, aunque podemos eliminar al principio o al final.

(32)

Operaciones básicas con colas

Crear la estructura

Crear la estructura

Insertar

Insertar

Eliminar

Eliminar

Obtener un elemento

Obtener un elemento

Vaciar

Vaciar

(33)

Bibliografía

Abstracción de datos

1. http://www14.uniovi.es/tutorED/abstraccion/abstraccionfr.html

Estructura de Datos

2. http://www14.uniovi.es/tutorED/estlineales/estlineafr.html 3. http://www14.uniovi.es/tutorED/java-c++/java-c++fr.html 4. Como programar en Java. Deitel y Deitel.

Listas

5. http://www14.uniovi.es/tutorED/estlineales/interlistafr.htm 6. http://oviedo3.ccu.uniovi.es/martin/EDI/ListPage.htm

Listas, pilas y colas. Ejercicios

7. Fundamentos de programación. Libro de problemas. Luis Joyanes Aguilar

Referencias

Documento similar

You may wish to take a note of your Organisation ID, which, in addition to the organisation name, can be used to search for an organisation you will need to affiliate with when you

Where possible, the EU IG and more specifically the data fields and associated business rules present in Chapter 2 –Data elements for the electronic submission of information

The 'On-boarding of users to Substance, Product, Organisation and Referentials (SPOR) data services' document must be considered the reference guidance, as this document includes the

In medicinal products containing more than one manufactured item (e.g., contraceptive having different strengths and fixed dose combination as part of the same medicinal

Products Management Services (PMS) - Implementation of International Organization for Standardization (ISO) standards for the identification of medicinal products (IDMP) in

Products Management Services (PMS) - Implementation of International Organization for Standardization (ISO) standards for the identification of medicinal products (IDMP) in

This section provides guidance with examples on encoding medicinal product packaging information, together with the relationship between Pack Size, Package Item (container)

Package Item (Container) Type : Vial (100000073563) Quantity Operator: equal to (100000000049) Package Item (Container) Quantity : 1 Material : Glass type I (200000003204)