Académique Documents
Professionnel Documents
Culture Documents
Itsguasave.edu.mx
ESTRUCTURA DE DATOS
Competencia de la Unidad
• Conoce, comprende y aplica los algoritmos de búsqueda para el uso
adecuado en el desarrollo de aplicaciones que permita solucionar
problemas del entorno.
ESTRUCTURA DE DATOS
INTRODUCCIÓN
• Una de las funciones que con mayor frecuencia se utiliza en los
sistemas de información, es el de las consultas a los datos, se hace
necesario utilizar algoritmos, que permitan realizar búsquedas de
forma rápida y eficiente.
• La búsqueda, se puede decir que es la acción de recuperar datos o
información, siendo una de las actividades que más aplicaciones
tiene en los sistemas de información.
• Más formalmente se puede definir como “La operación de búsqueda
sobre una estructura de datos es aquella que permite localizar un
nodo en particular si es que éste existe” (Euán, 1989).
ESTRUCTURA DE DATOS
• La llave es el campo por el cual se
va a realizar la búsqueda.
Clasificación de las Búsquedas
• La búsqueda por comparación de
llaves son algoritmos bastante
sencillos, en estos se van
comparando e las llaves.
Sintaxis:
fputs(char cadena, FILE archivo);
Dónde:
• Cadena: Es una variable tipo char.
• Archivo: Es una variable tipo apuntador FILE, el archivo al que apunta
debió ser abierto previamente.
ESTRUCTURA DE DATOS
• fgets(): Los archivos también pueden ser leídos, es decir su información puede
ser extraída y puesta en pantalla u otro medio de impresión por medio de la
instrucción fgets(). Esta instrucción mueve el apuntador del archivo un registro
por cada vez que se use.
Sintaxis:
fgets(char cadena, int longitud, FILE archivo);
Dónde:
• Cadena: Es una variable tipo char.
• Longitud: Es la longitud máxima de la cadena a leer, en caso de que se
encuentre un salto de línea o fin de archivo la lectura se detiene en ese
punto.
• Archivo: Es una variable apuntador de tipo FILE, el archivo al que apunta
debió ser abierto previamente.
ESTRUCTURA DE DATOS
COMPROBAR FINAL DE ARCHIVO
• feof(archivo): Cada vez que se mueve el apuntador del archivo la función
booleana feof(FILE archivo) puede ser usada, dicha función regresa true si el
fin de archivo ya fue alcanzado y false si aún no se ha encontrado.
Sintaxis:
if (feof(archivo))
cout<<“No hay mas registros en el archivo”;
ESTRUCTURA DE DATOS
CIERRE DE ARCHIVOS
• Es muy importante que esta instrucción sea utilizada ya que C++ libera la
memoria y recursos utilizados para el archivo cuando encuentra esta
instrucción. Además, mientras que no sea cerrado el archivo, el sistema
operativo no lo libera, por lo que no puede ser modificado o eliminado vía
COMMAND y/o Explorador de Windows.
ESTRUCTURA DE DATOS
Ejercicio:
Nota: Debido a que las llaves en el archivo de texto se guardan en modo char, la
verificación requiere que dichas llaves sean convertidas a tipo int para poder
realizar comparaciones.
ESTRUCTURA DE DATOS
Trabajando con Búsquedas Secuenciales en Archivos de Texto
MÓDULO PARA
CREAR ARCHIVO
DE TEXTO
ESTRUCTURA DE DATOS
MÓDULO PARA
REALIZAR LA
BÚSQUEDA
ESTRUCTURA DE DATOS
Búsqueda Binaria
ESTRUCTURA DE DATOS
BÚSQUEDA BINARIA
LI=6 LS=7
M=6
Asignamos posiciones a LI, LS y M
LI=6; LS=7; M=(6+7)/2 M=6;
Variables globales
Módulo main
ESTRUCTURA DE DATOS
Módulo de Búsqueda
Binaria
ESTRUCTURA DE DATOS
TRANSFORMACIÓN DE LLAVES
O TABLAS DE HASH
ESTRUCTURA DE DATOS
BÚSQUEDA MEDIANTE TRANSFORMACIÓN DE CLAVES (HASHING)
• Aritmética modular
• Mitad del cuadrado
• Truncamiento
• Plegamiento
• Tratamiento de colisiones
• Una tabla hash está compuesta por al menos dos elementos que forman una
pareja, la llave, y la información que contiene relacionada.
• Una función hash es método para generar claves o llaves que representen de
manera casi única a un documento o conjunto de datos. Es una operación
matemática que se realiza sobre este conjunto de datos de cualquier longitud,
y su salida es una huella digital, de tamaño fijo e independiente de la
dimensión del conjunto de datos originales.
• La tabla hash usa una función de dispersión para colocar los elementos, de
forma que no se pueden recorrer secuencialmente, pero a cambio el acceso a
partir de la clave es muy rápido, más que si hacemos una búsqueda secuencial
o binaria.
ESTRUCTURA DE DATOS
Ejercicio:
VARIABLES
GLOBALES
MÓDULO PARA
INICIAR ARREGLOS
ESTRUCTURA DE DATOS
MÓDULO PARA
CALCULAR POSICION
EN LA TABLA HASH
MAIN
MÓDULO
ESTRUCTURA DE DATOS
Proyecto final: Realice una aplicación con las siguientes características:
• Debe cargar un archivo de texto en donde cada línea contiene un número entero al
azar (100 líneas), cada línea se carga en un arreglo con el mismo número de
elementos.
• Una vez cargado en el arreglo se debe formar un árbol binario en el cual todos los
elementos menores a la raíz forman el subárbol izquierdo y todos los elementos
mayores o iguales a la raíz forman el subárbol derecho.
• Aplicar al árbol binario el método de acceso “inorden” y conforme se va visitando la
cada raíz se debe insertar el elemento contenido en cada nodo en un segundo
arreglo.
• Aplicar al primer arreglo un método de ordenamiento como los vistos en clase.
• Desplegar ambos arreglos para corroborar que ambos están ordenados e iguales.
• Aplicar un método de búsqueda como los vistos en clase sobre el primer arreglo.
ESTRUCTURA DE DATOS
Bibliografía