Implementación de nuevas
estructuras de datos Técnica: Abstracción de
Datos
• Tipos de Estructuras de Datos:
1) Datos organizados por Posición
y Listas
Pilas , Colas
2) Datos organizados por Valor
Arboles Binarios
Programación Modular 2
1
Introducción
• Estudio de las Estructuras de Datos:
Definición de la Estructura de Datos e
identificación de su Conjunto de
Operaciones
Presentación de Aplicaciones
Desarrollo de diversas Implementaciones
Programación Modular 3
Pilas
Añadir
Eliminar
Cabeza
Pila
Programación Modular 4
Definición
• Pila: Grupo Ordenado, (de
acuerdo al tiempo que llevan
en la pila) de Elementos
Homogéneos
del
mismo tipo).
(todos
• Acceso a la Pila: añadir y
eliminar elementos, SÓLO a
través de la CABEZA de la
Pila
• Estructura LIFO (Last Input
First Output)
2
Pilas. Operaciones
INTERFAZ CLASE CPila
TipoElemento ... // cualquier tipo de datos
TIPOS
METODOS
// Añade un elemento por la cabeza de la pila
Apilar( E TipoElemento elem)
// Saca un elemento por la cabeza de la Pila
Desapilar()
// Devuelve el elemento de la cabeza de la Pila
TipoElemento Cima()
...
Programación Modular 5
Pilas. Operaciones 2
...
// Crea una pila vacía
Crear()
//Operación lógica que nos dice si una pila está vacía o no
B EstáVacía ()
//Operación lógica que nos dice si una pila está llena o no.
//Necesaria en determinadas implementaciones
B EstáLlena()
// Destruye una pila previamente creada
Destruir()
FIN CPila
Programación Modular 6
3
Pilas. Aplicaciones
Aplicaciones
• Ejemplo1: Leer una secuencia de caracteres desde teclado
e imprimirla al revés
• Ejemplo2: Verificar si una cadena de caracteres está
balanceada en paréntesis o no
abc(defg(ijk))(l(mn)op)qr
abc(def))ghij(kl)m
SI
NO
• Ejemplo3: Reconocimiento del Lenguaje,
L={W$W´ / W es una cadena de caracteres y Wés su
inversa} (Suponemos que $ no está ni en W ni en W´)
Programación Modular 7
Pilas. Ejemplo1
Algoritmo Inverso
Tipos
TipoElemento = C
Variables
Inicio
TipoElemento c
CPila pila // Se llama automáticamente al constructor
Leer(c)
MIENTRAS c != CHR(13)HACER
pila.Apilar(c)
Leer(c)
FINMIENTRAS
MIENTRAS NO (pila.EstáVacía()) HACER
c = pila.Cima()
pila.Desapilar()
Escribir(c)
FINMIENTRAS
pila.Destruir()
Fin
Programación Modular 8
4
Pilas. Ejemplo2
Algoritmo Balanceo
Tipos
TipoElemento = C
Variables
TipoElemento c
CPila pila
B bien
Inicio
bien = VERDADERO
Leer(c)
MIENTRAS
HACER
(bien
Y (c!=CHR(13)))
SI c== ‘(’ ENTONCES
pila.Apilar(c)
SINO
SI c = = ‘)’ ENTONCES
SI (!pila.EstáVacía()) ENTONCES
pila.Desapilar()
SINO
bien = FALSO
FINSI
FINSI
FINSI
Leer(c)
FINMIENTRAS
SI bien Y pila.EstáVacía() ENTONCES
Escribir(“cadena balanceada “)
SINO
Escribir(“cadena no balanceada”)
FINSI
pila.Destruir()
Fin
Programación Modular 9
Pilas. Ejemplo3
Algoritmo Lenguaje_L
Tipos
TipoElemento = $
Variables
TipoElemento c1, c2
CPila pila
B bien
Inicio
Leer(c1)
MIENTRAS (c1 != ‘$’) HACER
pila.Apilar(c1)
Leer(c1)
FINMIENTRAS
Leer(c1)
bien = VERDADERO
MIENTRAS (bien AND
(c1 <> CHR(13))) HACER
SI pila.EstáVacía()ENTONCES
bien= FALSO
SINO
c2 = pila.Cima()
pila.Desapilar()
SI (c1 != c2) ENTONCES
bien = FALSE
SINO
FINSI
Leer(c1)
FINSI
FINMIENTRAS
SI (bien AND pila.EstáVacía())ENTONCES
Escribir (“ Si pertenece”)
Escribir (“No pertenece”)
SINO
FINSI
pila Destruir()
Fin
Programación Modular 10
5
Pilas. Aplicaciones
• Aplicaciones complejas que se pueden solucionar con
• Ventaja: Usando expresiones prefijas y postfijas no son
necesarias reglas de precedencia, ni uso de paréntesis.
Las gramáticas que las generan son muy simples, y los
algoritmos que las reconocen y evalúan muy fáciles
• Ejemplo 4: Algoritmo que evalúa una expresión en notación
Postfija
1)Usaremos una pila
2)La expresión postfija se almacenará en un array y será
correcta
3)Los operandores serán: +, -, * y /
4)Los operandos serán letras mayúsculas (a cada una le
podemos asignar un valor)
Comentarios de: Estructuras de Datos Avanzadas (0)
No hay comentarios