Descargar - Universidad Técnica Particular de Loja

Descargar - Universidad Técnica Particular de Loja Descargar - Universidad Técnica Particular de Loja

rsa.utpl.edu.ec
from rsa.utpl.edu.ec More from this publisher
16.05.2013 Views

Titulación Ciclo ¡ Ingeniero en Informática III 18308 UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja MODALIDAD ABIERTA Y A DISTANCIA Departamento de Ciencias de la Computación y Electrónica Sección Inteligencia y Artificial Estructura de Datos Guía didáctica 5 créditos Autores: Daniel Alejandro Guamán Coronel Guido Eduardo Riofrio Calderón Reestructura: Manuel Sucunuta Estimado estudiante recuerde que la presente guía didáctica está disponible en el EVA en formato PDF interactivo, lo que le permitirá acceder en línea a todos los recursos educativos. Asesoría virtual: www.utpl.edu.ec

Titulación Ciclo<br />

¡ Ingeniero en Informática III<br />

18308<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA<br />

La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong><br />

MODALIDAD ABIERTA Y A DISTANCIA<br />

Departamento <strong>de</strong> Ciencias <strong>de</strong> la Computación y Electrónica<br />

Sección Inteligencia y Artificial<br />

Estructura <strong>de</strong><br />

Datos<br />

Guía didáctica<br />

5 créditos<br />

Autores:<br />

Daniel Alejandro Guamán Coronel<br />

Guido Eduardo Riofrio Cal<strong>de</strong>rón<br />

Reestructura:<br />

Manuel Sucunuta<br />

Estimado estudiante recuer<strong>de</strong> que la presente guía didáctica está disponible en el EVA en formato PDF interactivo,<br />

lo que le permitirá acce<strong>de</strong>r en línea a todos los recursos educativos.<br />

Asesoría virtual:<br />

www.utpl.edu.ec


ESTRUCTURA DE DATOS<br />

Guía didáctica<br />

Daniel Alejandro Guamán Coronel<br />

Guido Eduardo Riofrío Cal<strong>de</strong>rón<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA<br />

CC Ecuador 3.0 By NC ND<br />

Diseño, maquetación e impresión:<br />

EDILOJA Cía. Ltda.<br />

Telefax: 593 - 7 - 2611418<br />

San Cayetano Alto s/n<br />

www.ediloja.com.ec<br />

edilojainfo@ediloja.com.ec<br />

<strong>Loja</strong>-Ecuador<br />

Derecho <strong>de</strong> autor 000356<br />

Segunda edición<br />

Sexta reimpresión<br />

ISBN - 978-9942-00-723-0<br />

Maquetación y diseño digital<br />

EDILOJA Cía. Ltda.<br />

Segunda edición<br />

ISBN digital- 978-9942-04-274-3<br />

Esta versión digital, ha sido licenciada bajo las licencias Creative Commons Ecuador 3.0 <strong>de</strong> Reconocimiento - no comercial-sin obras <strong>de</strong>rivadas; la cual<br />

permite copiar, distribuir y comunicar públicamente la obra, mientras se reconozca la autoría original, no se utilice con fines comerciales ni se realicen<br />

obras <strong>de</strong>rivadas. http://www.creativecommons.org/licences/by-nc-nd/3.0/ec/<br />

Abril, 2013


2. Índice<br />

2. Índice ................................................................................................................................................................. 4<br />

3. Introducción ................................................................................................................................................... 6<br />

4. Lineamientos generales <strong>de</strong>l Mo<strong>de</strong>lo Educativo basado en competencias y<br />

créditos académicos UTPL- ECTS ......................................................................................................... 7<br />

4.1. Competencias genéricas ........................................................................................................................... 8<br />

4.2. Competencias específicas ......................................................................................................................... 8<br />

5. Bibliografía ..................................................................................................................................................... 9<br />

5.1. Básica .......................................................................................................................................................... 9<br />

5.2. Complementaria ........................................................................................................................................ 9<br />

Direcciones Electrónicas .................................................................................................................................... 9<br />

6. Orientaciones generales para el estudio ........................................................................................ 11<br />

7. Proceso <strong>de</strong> enseñanza-aprendizaje para el logro <strong>de</strong> competencias ............................... 13<br />

PRIMER BIMESTRE<br />

7.1 Planificación para el trabajo <strong>de</strong>l alumno .............................................................................................. 13<br />

7.2. Sistema <strong>de</strong> evaluación <strong>de</strong> la asignatura ................................................................................................ 15<br />

7.3. Orientaciones específicas para el aprendizaje por competencias ..................................................... 16<br />

Unidad 1: ESTRUCTURAS LINEALES ESTÁTICAS (ARREGLOS) .................................................................................. 16<br />

1.1. Arreglos ...................................................................................................................................................... 16<br />

1.2. Operaciones con arreglos........................................................................................................................... 20<br />

1.3. Búsqueda ................................................................................................................................................... 22<br />

1.4. Operaciones adicionales con arreglo ......................................................................................................... 23<br />

1.5. Arreglos <strong>de</strong> dos dimensiones. .................................................................................................................... 25<br />

Autoevaluación 1 .................................................................................................................................................. 26<br />

Unidad 2: ESTRUCTURAS DINÁMICAS: APUNTADORES, LISTAS ENLAzADAS ........................................................... 28<br />

2.1. Apuntadores. .............................................................................................................................................. 28<br />

2.2. Estructura <strong>de</strong> datos dinámicas. ................................................................................................................. 30<br />

2.3. Listas enlazadas. ....................................................................................................................................... 30<br />

2.4. Clasificación <strong>de</strong> las listas enlazadas. ........................................................................................................ 31<br />

2.5. Operaciones con listas enlazadas. ............................................................................................................ 32<br />

Autoevaluación 2 .................................................................................................................................................. 35


SEGUNDO BIMESTRE<br />

7.2. Planificación para el trabajo <strong>de</strong>l alumno .............................................................................................. 36<br />

7.4. Orientaciones específicas para el aprendizaje por competencias ..................................................... 37<br />

Unidad 3: ESTRUCTURAS DE DATOS NO LINEALES, ÁRBOLES ................................................................................. 37<br />

3.1. Árboles. ...................................................................................................................................................... 37<br />

3.2. Terminología. ............................................................................................................................................. 38<br />

3.3. Aplicaciones <strong>de</strong> los árboles. ...................................................................................................................... 40<br />

3.4. Árboles binarios. ........................................................................................................................................ 40<br />

3.5. Recorridos en árboles binarios. ................................................................................................................. 41<br />

3.6. Árboles binarios <strong>de</strong> búsqueda. .................................................................................................................. 42<br />

Autoevaluación 3 .................................................................................................................................................. 43<br />

Unidad 4: ARCHIVOS.............................................................................................................................................. 45<br />

4.1. Formas <strong>de</strong> acceso. ..................................................................................................................................... 45<br />

4.2. Flujos.......................................................................................................................................................... 46<br />

4.3. Tipo <strong>de</strong> datos FILE. .................................................................................................................................... 46<br />

4.4. Abrir un archivo. ........................................................................................................................................ 47<br />

4.5. Escribir datos. ............................................................................................................................................ 47<br />

4.6. Leer datos. ................................................................................................................................................. 48<br />

4.7. Cerrar el archivo. ........................................................................................................................................ 48<br />

Autoevaluación 4 .................................................................................................................................................. 49<br />

Unidad 5: GRAFOS ................................................................................................................................................. 50<br />

5.1. Componentes <strong>de</strong> un grafo. ........................................................................................................................ 51<br />

5.2. Definiciones. .............................................................................................................................................. 52<br />

5.3. Representación. ......................................................................................................................................... 53<br />

Autoevaluación 5 .................................................................................................................................................. 55<br />

8. Solucionario ................................................................................................................................................... 57<br />

9. Anexos .............................................................................................................................................................. 66<br />

10. Recursos Multimedia ................................................................................................................................. 76


Preliminares<br />

3. Introducción<br />

Guía didáctica: Estructura <strong>de</strong> Datos<br />

“Estructura <strong>de</strong> Datos” es una asignatura con 5 créditos, forma parte <strong>de</strong>l grupo <strong>de</strong> materias troncales <strong>de</strong><br />

carrera <strong>de</strong> la malla <strong>de</strong> Ingeniería en Informática <strong>de</strong> la Escuela <strong>de</strong> Ciencias <strong>de</strong> la Computación, modalidad<br />

Abierta y a Distancia <strong>de</strong> la UTPL.<br />

Con los contenidos <strong>de</strong> la asignatura se preten<strong>de</strong> cubrir los conocimientos básicos <strong>de</strong> las estructuras <strong>de</strong><br />

datos <strong>de</strong>s<strong>de</strong> la perspectiva computacional, <strong>de</strong> tal forma que al construir una aplicación, sus programas<br />

se diseñen acor<strong>de</strong> al contexto <strong>de</strong>l problema; escogiendo las estructuras necesarias, con algoritmos<br />

eficientes y eficaces que garanticen el correcto funcionamiento <strong>de</strong> una solución informática.<br />

Múltiples son los estructuras y diversas las alternativas <strong>de</strong> solución, por lo que el estudiante podrá elegir<br />

la mas apropiada que le permita optimizar los recursos computacionales como es: memoria, procesador<br />

y medios <strong>de</strong> almacenamiento. Hoy en día los diversos lenguajes <strong>de</strong> programación facilitan el uso e<br />

implementación <strong>de</strong> las estructuras <strong>de</strong> datos, al incorporar componentes mucho mas fáciles <strong>de</strong> manejar<br />

<strong>de</strong>s<strong>de</strong> el punto <strong>de</strong> vista <strong>de</strong> la programación. Sin embargo la esencia conceptual <strong>de</strong> cada estructura sigue<br />

siendo el mismo, por lo que para realizar la parte teórica se a escogido como lenguaje <strong>de</strong> programación<br />

“C” en cualquiera <strong>de</strong> las versiones.<br />

La temática que abarca la asignatura ha sido estructurada en 5 unida<strong>de</strong>s, distribuidas en 2 para el primer<br />

bimestre y 3 para el segundo bimestre.<br />

Para el primer bimestre: la primera unidad compren<strong>de</strong> el análisis <strong>de</strong> las estructuras lineales estáticas<br />

implementadas con arreglos. En la segundad unidad se realiza el análisis <strong>de</strong> las estructuras <strong>de</strong> datos<br />

dinámicas, concretamente con lo que se refiere a apuntadores y listas enlazadas.<br />

Para el segundo bimestre, se realiza un análisis <strong>de</strong> las estructuras <strong>de</strong> datos no lineales, por lo que en la<br />

tercera unidad se abarca el tema <strong>de</strong> los árboles específicamente con las operaciones que se realizan<br />

en los árboles binarios. La unidad cuatro se enfoca a la forma <strong>de</strong> almacenar información en archivos,<br />

y finalmente en la unidad cinco se realiza un análisis general <strong>de</strong> los grafos, tanto dirigidos como no<br />

dirigidos.<br />

Recuer<strong>de</strong> señor estudiante que el proceso requiere <strong>de</strong> su esfuerzo y <strong>de</strong>dicación <strong>de</strong> su parte, y cualquier<br />

inquietud que tenga no du<strong>de</strong> en hacérmelo conocer ya que estaré junto a usted para acompañarle y<br />

orientarle en el proceso <strong>de</strong> aprendizaje.<br />

Muchos éxitos y buena suerte.<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong> 5


Guía didáctica: Estructura <strong>de</strong> Datos<br />

6<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong><br />

Preliminares<br />

4. Lineamientos generales <strong>de</strong>l Mo<strong>de</strong>lo Educativo basado en<br />

competencias y créditos académicos UTPL- ECTS<br />

Sr. Estudiante recuer<strong>de</strong> que usted ha iniciado su formación <strong>de</strong> tercer nivel con un sistema educativo<br />

basado en el <strong>de</strong>sarrollo <strong>de</strong> competencias a través <strong>de</strong> créditos académicos. Este mo<strong>de</strong>lo le convierte<br />

a usted en protagonista <strong>de</strong> su propia formación y al profesor en mediador <strong>de</strong> las experiencias <strong>de</strong><br />

aprendizaje.<br />

Surge entonces la necesidad <strong>de</strong> que tenga claro dos conceptos fundamentales competencia y crédito<br />

académico.<br />

• ¿Qué es una competencia? Enten<strong>de</strong>mos por competencia el conjunto <strong>de</strong> actitu<strong>de</strong>s, habilida<strong>de</strong>s<br />

y conocimientos que el alumno adquiere e incorpora según sus características personales y<br />

experiencias laborales y, que se ponen <strong>de</strong> manifiesto en el <strong>de</strong>sempeño <strong>de</strong> la actividad profesional.<br />

Las competencias se adquieren a lo largo <strong>de</strong>l proceso formativo <strong>de</strong> la carrera y se <strong>de</strong>sagregan en<br />

objetivos <strong>de</strong> aprendizaje propuestos en cada asignatura.<br />

Elementos <strong>de</strong> una competencia. Tres son los elementos que po<strong>de</strong>mos distinguir en toda<br />

competencia:<br />

¸ Actitu<strong>de</strong>s: son predisposiciones y comportamientos ante situaciones concretas.<br />

¸ Habilida<strong>de</strong>s: son <strong>de</strong>strezas para ejecutar con éxito tareas, utilizar procedimientos y realizar<br />

trabajos. Se <strong>de</strong>sarrollan a través <strong>de</strong> la práctica y la experiencia.<br />

¸ Conocimientos: constituyen los contenidos científicos, conceptuales, teóricos, conocidos también<br />

como el aprendizaje académico.<br />

• ¿Qué es un crédito académico UTPL / ECTS en la Modalidad a Distancia?<br />

Un crédito académico es la unidad <strong>de</strong> medida <strong>de</strong>l trabajo <strong>de</strong>l estudiante, implica 32 horas <strong>de</strong> trabajo <strong>de</strong>l<br />

alumno (29 horas <strong>de</strong> trabajo autónomo y 3 horas <strong>de</strong> interacción) 1 .<br />

Los créditos académicos que el estudiante irá acumulando en el transcurso <strong>de</strong> la carrera involucran:<br />

aprendizaje autónomo (estudio personal), tareas <strong>de</strong> investigación, interacción en el Entorno Virtual <strong>de</strong><br />

Aprendizaje (EVA), participación en tutorías, vi<strong>de</strong>oconferencias y otros eventos académicos (Jornadas,<br />

seminarios, cursos, congresos avalados por la UTPL), prácticas académicas, pasantías preprofesionales<br />

y <strong>de</strong> vinculación con la colectividad; activida<strong>de</strong>s <strong>de</strong> evaluación; así como la realización <strong>de</strong>l trabajo <strong>de</strong><br />

titulación.<br />

El mo<strong>de</strong>lo adoptado por la UTPL contempla dos tipos <strong>de</strong> competencias: genéricas y específicas.<br />

¸ Competencias Genéricas: Son aquellas capacida<strong>de</strong>s (actitu<strong>de</strong>s, habilida<strong>de</strong>s y conocimientos)<br />

comunes a todas las profesiones que se ofrecen en la UTPL. Constituyen una parte fundamental<br />

<strong>de</strong>l perfil que el estudiante <strong>de</strong>be <strong>de</strong>sarrollar durante su formación.<br />

1 CONESUP (2008): Reglamento <strong>de</strong>l Régimen Académico <strong>de</strong>l Sistema Nacional <strong>de</strong> Educación Superior, art. 18.


Preliminares<br />

Guía didáctica: Estructura <strong>de</strong> Datos<br />

¸ Competencias Específicas: son propias <strong>de</strong> la titulación, aportan a la cualificación específica para<br />

la profesión, dándole consistencia social y profesional al perfil formativo.<br />

• Estructura general <strong>de</strong>l programa formativo<br />

Las Unida<strong>de</strong>s Académicas o Escuelas <strong>de</strong> la UTPL han estructurado el programa formativo contemplando<br />

cinco ámbitos o bloques <strong>de</strong> asignaturas: Formación Básica (10%); Genéricas <strong>de</strong> carrera (15%); Troncales<br />

(35%) Complementarias (10%); Libre configuración (10%) y a<strong>de</strong>más, el Practicum que compren<strong>de</strong> las<br />

Pasantías preprofesionales y <strong>de</strong> vinculación con la colectividad y Practicum Académico (20%).<br />

4.1. Competencias genéricas<br />

- Capacidad para organizar y planificar el tiempo.<br />

- Capacidad <strong>de</strong> abstracción, análisis y síntesis.<br />

- Habilida<strong>de</strong>s para buscar, procesar y analizar información proce<strong>de</strong>nte <strong>de</strong> fuentes diversas.<br />

- Capacidad <strong>de</strong> aplicar los conocimientos.<br />

- Capacidad para i<strong>de</strong>ntificar, plantear y resolver problemas.<br />

- Capacidad creativa e innovadora.<br />

- Capacidad para tomar <strong>de</strong>cisiones.<br />

- Capacidad <strong>de</strong> trabajo en equipo.<br />

- Habilida<strong>de</strong>s interpersonales.<br />

- Compromiso con la calidad.<br />

- Capacidad para formular, diseñar y gestionar proyectos.<br />

- Compromiso ético.<br />

4.2. Competencias específicas<br />

Estas competencias se encuentran <strong>de</strong>talladas en la planificación <strong>de</strong> cada bimestre.<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong> 7


Guía didáctica: Estructura <strong>de</strong> Datos<br />

5.1. Básica<br />

8<br />

5. Bibliografía<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong><br />

Preliminares<br />

• Joyanes, L. y Zahonero, I. (2005). Programación en C. Metodología, algoritmos y estructura <strong>de</strong><br />

datos. Madrid-España: McGrawHill.<br />

Los autores <strong>de</strong> esta obra tienen una amplia experiencia en temas relacionados con el diseño <strong>de</strong><br />

algoritmos, <strong>de</strong>sarrollo <strong>de</strong> programas y en varios lenguaje <strong>de</strong> programación. El texto se ha seleccionado<br />

por cuanto utiliza como lenguaje <strong>de</strong> <strong>de</strong>sarrollo C, que es un lenguaje que nos permite ir analizando<br />

<strong>de</strong>tenidamente las estructuras <strong>de</strong> datos que se analizarán; inicialmente el texto dispone <strong>de</strong> capítulos<br />

que permiten conocer el lenguaje (c) y no tener problemas con el mismo.<br />

5.2. Complementaria<br />

• Joyanes, L.; Castillo, A.; Sánchez, L.; Zahonero, I. (2005). C. Algoritmos, programación y estructuras<br />

<strong>de</strong> datos. Madrid-España: McGrawHill. Serie Schawum.<br />

Es un texto don<strong>de</strong> los autores enfocan el estudio en base a ejercicios y problemas que plantean<br />

una solución, para su análisis. También se plantean ejercicios propuestos que el estudiante los<br />

podría resolver.<br />

• KOFFMAN Elliot B., WOLFGANG Paul, (2008) Estructura <strong>de</strong> datos con C++, México, Editorial Mc<br />

Graw Hill.<br />

El presente libro contiene información y ejercicios, relacionados con listas, arreglos, objetos los<br />

cuales se estudian a lo largo <strong>de</strong>l presente período.<br />

• JOYANES Luis, MARTINEZ Ignacio, AZUELA Matil<strong>de</strong>, GARCIA Lucas, (2005) Estructura <strong>de</strong> Datos en C,<br />

España, Editorial Mc Graw Hill.<br />

Es un texto muy didáctico que contiene ejercicios propuestos y resueltos referentes a los temas a<br />

llevarse a cabo en el presente estudio como arreglos, colas, listas.<br />

• JOYANES, L. (2000): Programación en C++, Algoritmos, estructura <strong>de</strong> datos y objetos, España,<br />

Editorial Mc Graw Hill.<br />

Texto que posee información <strong>de</strong> temática relacionado a las estructuras <strong>de</strong> datos e incluye ejercicios<br />

<strong>de</strong>sarrollados en C++.<br />

Direcciones Electrónicas<br />

• Urrutia, G. (2004): Curso <strong>de</strong> C [en línea]. Disponible en: http://www.elrincon<strong>de</strong>lc.com/cursoc/<br />

cursoc.html [consulta 09/09/2009]


Preliminares<br />

Guía didáctica: Estructura <strong>de</strong> Datos<br />

En esta dirección encontrará codificación referente a la <strong>de</strong>claración y uso <strong>de</strong> arreglos, punteros y<br />

buenas prácticas en C.<br />

• Zator Systems (2008): Curso C++. [en línea]. Disponible en: http://www.zator.com/Cpp/E_Ce.htm<br />

[consulta 09/09/2009]<br />

Dirección que contiene amplias explicaciones con ejemplos sobre temas referentes a<br />

programación en C.<br />

• Pozo, S. (2001): Árboles B. [en línea]. Disponible en: http://articulos.conclase.net/arboles-b/<br />

[consulta 09/09/2009]<br />

Dirección electrónica que contiene información relacionada al tema <strong>de</strong> árboles en C.<br />

• Biblioteca Virtual UTPL, www.utpl.edu.ec/biblioteca<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong> 9


Guía didáctica: Estructura <strong>de</strong> Datos<br />

10<br />

6. Orientaciones generales para el estudio<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong><br />

Preliminares<br />

En la Biblioteca virtual encontrará recursos digitales referentes a los contenidos <strong>de</strong> esta asignatura,<br />

así como <strong>de</strong> diferentes áreas <strong>de</strong>l conocimiento.<br />

La presente asignatura al ser una materia troncal <strong>de</strong> la carrera <strong>de</strong> Ingeniería en Informática, constituye<br />

una <strong>de</strong> las bases fundamentales para la formación <strong>de</strong>l estudiante <strong>de</strong>ntro <strong>de</strong> su área profesional, por lo<br />

tanto, le ofrecemos algunas orientaciones <strong>de</strong> como aprovechar al máximo las diversas ayudas que se<br />

incluyen en recursos didácticos como:<br />

1) La guía didáctica:<br />

Le permitirá orientarse sobre los temas a estudiar, a<strong>de</strong>más contiene ejercicios <strong>de</strong> autoevaluación<br />

que le permitirán medir su grado <strong>de</strong> comprensión. Por lo tanto lea <strong>de</strong>tenidamente la Guía Didáctica,<br />

ya que en ella se encuentran las indicaciones que guiarán su autoaprendizaje<br />

2) El texto básico:<br />

En este texto se encuentran los contenidos que se van a tratar en la presente asignatura, su uso<br />

esta restringido a la guía didáctica, esto es, que <strong>de</strong>berá acudir a la guía didáctica para saber cuales<br />

son los temas que <strong>de</strong>berá abordar. Por ello, se recomienda trabajar en forma paralela la guía con<br />

el texto básico.<br />

3) El entorno virtual <strong>de</strong> aprendizaje (EVA):<br />

Es un espacio don<strong>de</strong> podrá compartir con sus compañeros y con su profesor mediante mensajes,<br />

anuncios, foros, tareas, etc. A<strong>de</strong>más su interacción en este medio es obligatorio, ya que como<br />

estudiante <strong>de</strong> ésta área es un <strong>de</strong>ber usar este tipo <strong>de</strong> recursos.<br />

4) Trabajos a distancia:<br />

Son una estrategia <strong>de</strong> aprendizaje por tanto contando con todos los medios necesarios resuelva<br />

los ejercicios y casos que allí se plantean. A<strong>de</strong>más estos trabajos tienen una valoración <strong>de</strong> 6 puntos<br />

con el tiempo suficiente para <strong>de</strong>sarrollarlos.<br />

5) Tutoría:<br />

Es un tiempo semanal que como profesores <strong>de</strong>dicamos para aten<strong>de</strong>r las inquietu<strong>de</strong>s en relación a<br />

los contenidos o <strong>de</strong>sarrollo <strong>de</strong> trabajos, para ello se publicará un horario en el cual podrán asistir<br />

personalmente o contactarse vía telefónica, el mismo que se <strong>de</strong>talla en la carátula <strong>de</strong> la evaluación<br />

a distancia.<br />

En cuanto a la forma <strong>de</strong> trabajo damos algunos lineamientos que le ayudarán a aprovechar su<br />

tiempo y lograr mejores resultados:<br />

1) El tiempo que <strong>de</strong>dique a la lectura y <strong>de</strong>sarrollo <strong>de</strong> los ejercicios es fundamental, por lo tanto <strong>de</strong>berá<br />

<strong>de</strong>dicar al menos 6 horas semanales. Pue<strong>de</strong> apoyarse con técnicas como subrayado, cuadros<br />

sinópticos y sobre todo mapas conceptuales.


Preliminares<br />

Guía didáctica: Estructura <strong>de</strong> Datos<br />

2) Recuer<strong>de</strong> que cuenta con su profesor tutor para la comprensión <strong>de</strong> los temas, entonces la<br />

comunicación con el mismo será fundamental, para lo cual <strong>de</strong>be familiarizarse con las formas<br />

<strong>de</strong> comunicación que tiene, ya sea por teléfono (consultar horario <strong>de</strong> tutoría), email, chat, y otras<br />

herramientas tecnológicas. Recuer<strong>de</strong> a<strong>de</strong>más que existe una variada información en el internet,<br />

bibliotecas digitales y también la documentación que su profesor le acerca a través <strong>de</strong>l EVA.<br />

3) Lea <strong>de</strong>tenidamente la guía didáctica, ya que en ella se encuentran las indicaciones que guiarán<br />

su autoaprendizaje. Revise y analice cada uno <strong>de</strong> los temas <strong>de</strong>l texto básico y utilice técnicas <strong>de</strong><br />

estudio como el subrayado, resúmenes, cuadros sinópticos, mentefactos y/o cualquier estrategia<br />

<strong>de</strong> aprendizaje que se a<strong>de</strong>cue a su forma <strong>de</strong> apren<strong>de</strong>r.<br />

4) Como parte <strong>de</strong> su autoaprendizaje es recomendable que resuelva las autoevaluaciones ubicadas<br />

al final <strong>de</strong> cada unidad <strong>de</strong> estudio, hágalas sin consultar ningún documento y luego verifique las<br />

respuestas en el solucionario ubicado al final <strong>de</strong> la guía didáctica. El contenido científico para el<br />

<strong>de</strong>sarrollo <strong>de</strong> la evaluación a distancia usted lo encontrará en el texto básico y la guía didáctica.<br />

Para po<strong>de</strong>r ser ayudado en las diferentes temáticas por los profesores / tutores usted pue<strong>de</strong> utilizar<br />

medios como: correo electrónico, entorno virtual <strong>de</strong> aprendizaje (EVA), chat, línea telefónica.<br />

En la guía didáctica se incluyen algunas imágenes que sirven <strong>de</strong> focalizadores para i<strong>de</strong>ntificar<br />

apropiadamente el texto, a continuación se indican:<br />

Icono Descripción<br />

Este ícono se usará para solicitarle la lectura <strong>de</strong> una sección <strong>de</strong>l texto básico (Lecturas<br />

recomendadas, texto complementarios, OCW)<br />

Desarrollo <strong>de</strong> autoevaluaciones, al final <strong>de</strong> cada unidad<br />

Ejercicios y activida<strong>de</strong>s recomendadas en toda la guía<br />

Profundizar temas<br />

Para recordar algunos aspectos importantes<br />

Para indicar que existen anexos en los cuales se podrá ampliar el análisis o ejemplo.<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong> 11


Primer bimestre<br />

Guía didáctica: Estructura <strong>de</strong> Datos<br />

7. Proceso <strong>de</strong> enseñanza-aprendizaje para el logro <strong>de</strong> competencias<br />

7.1 Planificación para el trabajo <strong>de</strong>l alumno<br />

COMPETENCIAS<br />

ESPECÍFICAS<br />

Analizar las necesida<strong>de</strong>s<br />

<strong>de</strong> conocimiento<br />

necesarias para resolver<br />

un problema.<br />

Compren<strong>de</strong>r, analizar<br />

y resolver problemas<br />

aplicando los métodos<br />

<strong>de</strong> la ciencia y la<br />

ingeniería.<br />

Aplicar la lógica<br />

matemática en el<br />

contexto <strong>de</strong> las Ciencias<br />

<strong>de</strong> la Computación, con<br />

proyección, al diseño <strong>de</strong><br />

circuitos, programación,<br />

análisis y <strong>de</strong>sarrollo <strong>de</strong><br />

algoritmos.<br />

OBJETIVOS DE<br />

APRENDIZAJE<br />

• Reconoce el tipo <strong>de</strong> estructura<br />

estática lineal a utlizar en la<br />

solución <strong>de</strong> un <strong>de</strong>terminado<br />

problema.<br />

• Resuelve problemas <strong>de</strong> índole<br />

algebraico al utilizando<br />

arreglos.<br />

• Propone un método<br />

para or<strong>de</strong>nar una lista <strong>de</strong><br />

elementos <strong>de</strong> diferente tipo<br />

<strong>de</strong> datos.<br />

PRIMER BIMESTRE<br />

CONTENIDOS<br />

CRONOGRAMA<br />

ORIENTATIVO<br />

Unida<strong>de</strong>s/Temas Tiempo estimado<br />

UNIDAD 1:<br />

Semana 1, 2 y 3.<br />

1.1 Arreglos<br />

18 horas <strong>de</strong><br />

1.2 Operaciones con Arreglos<br />

autoestudio<br />

1.3 Búsqueda<br />

1.4 Arreglos <strong>de</strong> dos dimensiones<br />

1.5 Autoevaluación 1<br />

12 horas <strong>de</strong> interacción<br />

con el EVA<br />

ACTIVIDADES DE<br />

APRENDIZAJE<br />

Revisión <strong>de</strong> los<br />

capítulos preliminares<br />

<strong>de</strong>l texto base<br />

(capítulos 3, 4, 6 y 7).<br />

Lectura <strong>de</strong>l<br />

capítulo 9 (Arrays)<br />

y 10 (Algoritmos<br />

<strong>de</strong> or<strong>de</strong>nación<br />

y búsqueda) <strong>de</strong>l<br />

texto básico tal<br />

como se indica en<br />

la guía didáctica<br />

complementado con<br />

las activida<strong>de</strong>s <strong>de</strong> la<br />

unidad 1 <strong>de</strong> la guía<br />

didáctica<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong> 13


Guía didáctica: Estructura <strong>de</strong> Datos<br />

Diseño e<br />

implementación<br />

<strong>de</strong> programas <strong>de</strong><br />

aplicación.<br />

Diagnóstico y solución<br />

<strong>de</strong> problemas en<br />

software.<br />

14<br />

• I<strong>de</strong>ntifica la forma correcta <strong>de</strong><br />

crear apuntadores.<br />

• Analiza la represetación <strong>de</strong><br />

punteros en la memoría <strong>de</strong>l<br />

computador.<br />

• I<strong>de</strong>ntifica la forma <strong>de</strong><br />

representar las estructuras <strong>de</strong><br />

datos dinámicas.<br />

• Propone soluciones para crear<br />

y recorrer listas enlazadas<br />

UNIDAD 2:<br />

Semana 4, 5 y 6<br />

2.1 Apuntadores<br />

18 horas <strong>de</strong><br />

autoestudio<br />

2.2 Estructura <strong>de</strong> datos dinámicas<br />

12 horas <strong>de</strong> interacción<br />

2.3 Listas enlazadas<br />

con el EVA<br />

2.4 Clasificación <strong>de</strong> las listas enlazadas<br />

2.5 Operaciones con listas enlazadas<br />

2.6 Autoevaluación 2<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong><br />

UNIDADES 1 Y 2 Semana 7 y 8<br />

12 horas <strong>de</strong><br />

autoestudio<br />

8 horas <strong>de</strong> interacción<br />

Primer bimestre<br />

Desarrollo<br />

<strong>de</strong> la primera<br />

autoevaluación que<br />

se indica en la guía<br />

didactica.<br />

Realizar la interacción<br />

en el EVA: foro<br />

Lectura <strong>de</strong> los<br />

capítulos 12 y 18<br />

<strong>de</strong>l texto básico tal<br />

como se indica en<br />

la guía didáctica<br />

complementado con<br />

las activida<strong>de</strong>s <strong>de</strong> la<br />

unidad 2 <strong>de</strong> la guía<br />

didáctica<br />

Desarrollo <strong>de</strong><br />

la segunda<br />

autoevaluación que<br />

se indica en la guía<br />

didactica.<br />

Realizar la interacción<br />

en el EVA: foro<br />

Analizar ejercicios<br />

adicionales que se<br />

indicarán en el EVA.<br />

Repaso general <strong>de</strong> la<br />

materia<br />

Desarrollo ejercicios<br />

adicionales en el EVA


Primer bimestre<br />

7.2. Sistema <strong>de</strong> evaluación <strong>de</strong> la asignatura<br />

Actitu<strong>de</strong>s<br />

Habilida<strong>de</strong>s<br />

Conocimientos<br />

1. Autoevaluación *<br />

Parte Objetiva<br />

Guía didáctica: Estructura <strong>de</strong> Datos<br />

2. Heteroevaluación<br />

Evaluación a Distancia<br />

Parte <strong>de</strong><br />

Ensayo<br />

Interacción<br />

con el EVA<br />

Evaluación<br />

Presencial<br />

Comportamiento ético X X X X X X<br />

Cumplimiento, puntualidad, responsabilidad X X X<br />

Esfuerzo e interés en los trabajos X X X X X X<br />

Respeto a las personas y a las normas <strong>de</strong><br />

comunicación<br />

Creatividad e iniciativa X<br />

Contribución en el trabajo colaborativo y <strong>de</strong><br />

equipo<br />

Presentación, or<strong>de</strong>n y ortografía X X<br />

Emite juicios <strong>de</strong> valor argumentadamente<br />

Dominio <strong>de</strong>l contenido X X X X X<br />

Investigación (cita fuentes <strong>de</strong> consulta) X X<br />

Aporta con criterios y soluciones<br />

Análisis y profundidad en el <strong>de</strong>sarrollo <strong>de</strong><br />

temas<br />

X X<br />

PORCENTAJE<br />

Estrategia <strong>de</strong> aprendizaje<br />

10% 20% 30%<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong> 15<br />

X<br />

Máximo 1 punto (Completa<br />

la evaluación a distancia)<br />

Puntaje 2 4 6 14<br />

TOTAL 20 puntos<br />

Para aprobar la asignatura se requiere obtener un puntaje mínimo <strong>de</strong> 28/40 puntos, que equivale al 70%<br />

Sr. estudiante:<br />

Tenga presente que la finalidad <strong>de</strong> la valoración cualitativa es principalmente formativa; sin embargo,<br />

en circunstancias especiales podría afectarle positiva o negativamente en su calificación cuantitativa.<br />

70%<br />

3. Coevaluación<br />

Activida<strong>de</strong>s presenciales y<br />

en el EVA


Guía didáctica: Estructura <strong>de</strong> Datos<br />

16<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong><br />

Primer bimestre<br />

7.3. Orientaciones específicas para el aprendizaje por competencias<br />

Unidad 1: ESTRUCTURAS LINEALES ESTÁTICAS (ARREGLOS)<br />

Recursos educativos multimedia<br />

Recursos educativos multimedia<br />

Los tipos <strong>de</strong> datos son uno <strong>de</strong> los elementos fundamentales para construir aplicaciones, por lo tanto en<br />

este capítulo abordaremos el estudio <strong>de</strong> uno <strong>de</strong> los tipos <strong>de</strong> datos compuestos como son los arreglos.<br />

Para trabajar con estas estructuras <strong>de</strong> datos es necesario tener algunos conocimiento previos, como es:<br />

• Definición <strong>de</strong> tipos <strong>de</strong> datos básicos (enteros, <strong>de</strong>cimales, carácter, ca<strong>de</strong>nas <strong>de</strong> caracteres,<br />

booleanos, etc).<br />

• Uso <strong>de</strong> estructuras secuenciales, condicionales y repetitivas<br />

• Conocimientos básicos <strong>de</strong>l lenguaje C, entre otros.<br />

1.1. Arreglos<br />

Si no tiene los conocimientos básicos se sugiere hacer una revisión <strong>de</strong> los<br />

capítulos: 3 (El lenguaje C: elementos básicos), 4 (Operadores y expresiones),<br />

6 (Estructuras <strong>de</strong> control: bucles) y 7 (Funciones) <strong>de</strong>l texto básico, en el que se<br />

indica <strong>de</strong> forma <strong>de</strong>tallada estos temas.<br />

Una vez que cuenta con los conocimientos previos es hora <strong>de</strong> empezar con el estudio <strong>de</strong> los arreglos<br />

para utilizarlos en ejercicios comunes <strong>de</strong> tratamiento <strong>de</strong> información a nivel <strong>de</strong> listas.


Primer bimestre<br />

Guía didáctica: Estructura <strong>de</strong> Datos<br />

Revise el apartado 9.1. Arrays <strong>de</strong>l texto base. Recalque su análisis en la forma <strong>de</strong><br />

<strong>de</strong>clarar, <strong>de</strong> <strong>de</strong>finir el tamaño, los subíndices y el almacenamiento en memoria.<br />

Pue<strong>de</strong> utilizar la técnica <strong>de</strong>l subrayado, esto ayudará a lograr una mejor<br />

comprensión <strong>de</strong>l tema.<br />

Ahora que ya tiene claro el concepto <strong>de</strong> los arreglos es conveniente asociar esta estructura con los<br />

problemas que se <strong>de</strong>sea solucionar. En términos generales un arreglo lo po<strong>de</strong>mos utilizar en todos<br />

aquellos casos en los que se <strong>de</strong>sea trabajar con un conjunto <strong>de</strong> elementos, y que para hacer referencia a<br />

estos datos se lo hace a través <strong>de</strong> un sólo i<strong>de</strong>ntificador, pero por supuesto para acce<strong>de</strong>r a cada elemento<br />

se lo realiza mediante un índice.<br />

En resumen los arreglos poseen las siguientes características:<br />

• Finitos: todo arreglo tiene un límite, <strong>de</strong>be <strong>de</strong>terminarse cuál es el número máximo <strong>de</strong> elementos<br />

que podrán formar parte <strong>de</strong>l arreglo.<br />

• Homogéneos: todos los elementos <strong>de</strong> un arreglo son <strong>de</strong>l mismo tipo <strong>de</strong> dato, es <strong>de</strong>cir: enteros,<br />

string, char, double, etc., pero nunca una combinación <strong>de</strong> mas <strong>de</strong> un tipo.<br />

• Or<strong>de</strong>nados: se pue<strong>de</strong> <strong>de</strong>terminar cuál es el primer, segundo, tercer, enésimo elemento.<br />

A<strong>de</strong>más recor<strong>de</strong>mos que los arreglos pue<strong>de</strong>n ser <strong>de</strong> varios tipos, <strong>de</strong>stacando los siguientes:<br />

• Unidimensionales (Una dimensión).<br />

• Bidimensionales (Dos dimensiones).<br />

• Tres o más dimensiones.<br />

La mayoría <strong>de</strong> los lenguajes <strong>de</strong> programación al trabajar con arreglos utiliza la<br />

in<strong>de</strong>xación basada en cero, que consiste en que el subíndice <strong>de</strong> inicio <strong>de</strong>l arreglo<br />

es cero. Por tanto si hablamos <strong>de</strong> un arreglo con 10 elementos sus subíndices<br />

serán <strong>de</strong>s<strong>de</strong> 0 al 9, muchas <strong>de</strong> las veces se tien<strong>de</strong> a confundir la posición <strong>de</strong><br />

cierto elemento por ésta situación.<br />

En la figura 1.1 se representa un arreglo unidimensional con las eda<strong>de</strong>s <strong>de</strong> un grupo <strong>de</strong> 10 personas.<br />

eda<strong>de</strong>s 45 37 39 29 31 48 45 35 32 51<br />

0 1 2 3 4 5 6 7 8 9<br />

índices<br />

Figura 1.1 Representación gráfica <strong>de</strong> un arreglo unidimensional<br />

En este arreglo es importante resaltar lo siguiente:<br />

• Tiene un único i<strong>de</strong>ntificador: eda<strong>de</strong>s<br />

• Su tamaño es <strong>de</strong>: 10 elementos<br />

• Cada uno <strong>de</strong> los elementos se los i<strong>de</strong>ntifica a través <strong>de</strong> el índice. Por ejemplo: en el subíndice 3 <strong>de</strong>l<br />

arreglo se encuentra el elemento 29, que sería el cuarto elemento <strong>de</strong> la lista.<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong> 17


Guía didáctica: Estructura <strong>de</strong> Datos<br />

Utilizando el lenguaje <strong>de</strong> programación C, la <strong>de</strong>finición <strong>de</strong>l arreglo <strong>de</strong> la figura 1.1 sería:<br />

int eda<strong>de</strong>s[10];<br />

18<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong><br />

Primer bimestre<br />

Al hacer esta <strong>de</strong>finición, en la memoria <strong>de</strong>l computador se reserva el espacio <strong>de</strong> memoria <strong>de</strong> cierto<br />

tamaño (esto <strong>de</strong>pen<strong>de</strong>rá <strong>de</strong> la longitud <strong>de</strong> palabra <strong>de</strong>l procesador). En el supuesto caso que el tipo <strong>de</strong><br />

dato int ocupe dos bytes, el espacio <strong>de</strong> memoria para la <strong>de</strong>finición anterior sería <strong>de</strong> 20 bytes. Se pue<strong>de</strong><br />

utilizar el operador sizeof para saber cuantos bytes ocupa el arreglo, se pue<strong>de</strong> utilizar con la siguiente<br />

instrucción:<br />

n = sizeof(eda<strong>de</strong>s);<br />

La forma <strong>de</strong> inicializar un arreglo pue<strong>de</strong> ser <strong>de</strong> varias formas, <strong>de</strong>pen<strong>de</strong> <strong>de</strong> la necesidad y las circunstancias.<br />

A veces pue<strong>de</strong> ser necesario inicializarlo al momento <strong>de</strong> <strong>de</strong>finirlo o en otras ocasiones ingresarlo <strong>de</strong>s<strong>de</strong><br />

una fuente externa (a la aplicación), que pue<strong>de</strong> ser <strong>de</strong>s<strong>de</strong> la consola o <strong>de</strong> algún medio <strong>de</strong> almacenamiento<br />

e incluso <strong>de</strong>s<strong>de</strong> alguna librería o programa.<br />

Finalizado el presente apartado se plantean ejercicios que permiten afianzar los conocimientos, por<br />

lo que <strong>de</strong>berá realizar el respectivo análisis y <strong>de</strong>sarrollo basándose en los contenidos anteriormente<br />

tratados.<br />

Ejercicio 1.1<br />

1) Indique ejemplos en los cuales consi<strong>de</strong>ra se aplica arreglos en la vida cotidiana.<br />

2) Defina un índice y un elemento <strong>de</strong> un arreglo unidimensional.<br />

3) Si tuviéramos un arreglo <strong>de</strong> caracteres con el texto “ESTRUCUTRA” ¿cuál sería el índice <strong>de</strong> la letra<br />

“T”?.<br />

Ejercicio 1.2<br />

Un curso <strong>de</strong> Computación tiene 50 alumnos matriculados, si Ud. tuviese que diseñar un arreglo para<br />

registrar las notas <strong>de</strong> los alumnos responda lo siguiente utilizando la programación en C/C++:<br />

1) ¿De qué tipo <strong>de</strong> dato lo <strong>de</strong>finiría?<br />

2) ¿Qué tamaño tendría el arreglo?<br />

3) ¿Cuál es el índice inferior <strong>de</strong>l arreglo?<br />

4) ¿Cuál es el índice superior <strong>de</strong>l arreglo?<br />

5) ¿Cuál sería la <strong>de</strong>finición?<br />

Ejercicio 1.3<br />

Realice un programa en C/C++ que permita ingresar un arreglo <strong>de</strong> enteros <strong>de</strong> 5 elementos, luego que<br />

haya ingresado los elementos al arreglo proceda a realizar las siguientes operaciones:


Primer bimestre<br />

1. Mostrar o leer cada uno <strong>de</strong> los elementos ingresados.<br />

2. Lea el elemento que se encuentra en la posición 3.<br />

Ejercicio 1.4<br />

Guía didáctica: Estructura <strong>de</strong> Datos<br />

Cuál es el resultado <strong>de</strong> la ejecución <strong>de</strong>l siguiente programa en C/C++ que utilice funciones <strong>de</strong> la librería<br />

“string.h” para manipular ca<strong>de</strong>nas <strong>de</strong> texto.<br />

#inclu<strong>de</strong> <br />

#inclu<strong>de</strong> <br />

#inclu<strong>de</strong> <br />

char ca<strong>de</strong>na0[100];<br />

char ca<strong>de</strong>na1[ ]=”<strong>Universidad</strong>”;<br />

char ca<strong>de</strong>na2[ ]=”<strong>Loja</strong>”;<br />

char ca<strong>de</strong>na3[ ]=”Tecnica <strong>de</strong>”;<br />

char ca<strong>de</strong>na4;<br />

int i;<br />

main(){<br />

printf(“El contenido <strong>de</strong> la ca<strong>de</strong>na1 es:%s\n\n“,ca<strong>de</strong>na1);<br />

printf(“El tamaño <strong>de</strong>l arreglo ca<strong>de</strong>na1 es:%d\n\n“,sizeof(ca<strong>de</strong>na1));<br />

printf(“El tamaño <strong>de</strong> la ca<strong>de</strong>na <strong>de</strong> texto es:%d\n\n”,strlen(ca<strong>de</strong>na1));<br />

printf(“El resultado <strong>de</strong> la concatenacion es:%s\n\n”,strcat(ca<strong>de</strong>na1, ca<strong>de</strong>na2));<br />

ca<strong>de</strong>na4 = strpbrk(ca<strong>de</strong>na1, “L“);<br />

strncpy(ca<strong>de</strong>na0,ca<strong>de</strong>na1,11);<br />

strcat(ca<strong>de</strong>na0,ca<strong>de</strong>na4);<br />

for (i=0; i


Guía didáctica: Estructura <strong>de</strong> Datos<br />

Detalle <strong>de</strong>l código:<br />

20<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong><br />

Primer bimestre<br />

Líneas <strong>de</strong> la 1 a la 4 Librerías necesarias para trabajar con funciones tipo string y para<br />

presentar los datos en pantalla y po<strong>de</strong>r leerlos.<br />

Líneas <strong>de</strong> la 6 a la 9 En estas líneas se <strong>de</strong>claran los arreglos <strong>de</strong> tipo <strong>de</strong> dato char para<br />

almacenar las ca<strong>de</strong>nas <strong>de</strong> texto.<br />

Línea 10 En C/C++ una ca<strong>de</strong>na también pue<strong>de</strong> ser <strong>de</strong>clarada como un<br />

puntero a char en este caso las funciones <strong>de</strong> manipulación <strong>de</strong><br />

string interpretan a un dato <strong>de</strong> este tipo hasta encontrar en primer<br />

carácter nulo.<br />

Líneas 14 a la 17 En la primera línea se <strong>de</strong>termina cuantos elementos tiene la<br />

estructura <strong>de</strong>s<strong>de</strong> el punto <strong>de</strong> vista <strong>de</strong> un arreglo, como se podrá<br />

dar cuenta el valor retornado es 12, es <strong>de</strong>cir uno más <strong>de</strong>l total <strong>de</strong><br />

letras que tiene la ca<strong>de</strong>na, esto se <strong>de</strong>be a que en el arreglo se toma<br />

en cuenta el carácter nulo que existe al final <strong>de</strong> todo el string. En la<br />

segunda línea se utiliza las funciones <strong>de</strong> string, por lo tanto estas<br />

funciones no toman en cuenta el dato nulo como parte <strong>de</strong> una<br />

ca<strong>de</strong>na <strong>de</strong> caracteres.<br />

Líneas 18 a la 24 La función strcat se utiliza para concatenar ca<strong>de</strong>nas, la función<br />

strpbrk divi<strong>de</strong> un string en base a un carácter <strong>de</strong>terminado y<br />

retorna el string que está <strong>de</strong>spués <strong>de</strong> dicho caracter.<br />

1.2. Operaciones con arreglos<br />

Bien, una vez que hemos estudiado los aspectos fundamentales <strong>de</strong> los arreglos vamos a revisar algunos<br />

algoritmos y técnicas para manipular los datos <strong>de</strong> estas estructuras, es importante que ponga especial<br />

atención a estos algoritmos ya que los mismos son la base para <strong>de</strong>sarrollar y resolver aplicaciones<br />

específicas en programación utilizando cualquier lenguaje <strong>de</strong> programación.<br />

Dentro <strong>de</strong> las operaciones que intervienen en los arreglos constan: lectura/escritura, asignación,<br />

actualización, or<strong>de</strong>nación y búsqueda; las operaciones como <strong>de</strong>claración, lectura y asignación <strong>de</strong> datos<br />

ya se estudiaron en los ejercicios anteriores que usted realizó; ahora conviene revisar los temas <strong>de</strong><br />

búsqueda, or<strong>de</strong>nación.<br />

Antes <strong>de</strong> abordar estos temas es necesario que estudie en el texto básico los temas relacionados a<br />

Algoritmos <strong>de</strong> Or<strong>de</strong>nación y Búsqueda los mismos que le ayudarán a compren<strong>de</strong>r <strong>de</strong> mejor manera lo<br />

que se preten<strong>de</strong> en este capítulo.<br />

Del capítulo 10 revise el apartado 10.1. Or<strong>de</strong>nación, 10. 2 Or<strong>de</strong>nación por<br />

burbuja, 10.3 Or<strong>de</strong>nación por selección y 10.4 Or<strong>de</strong>nación por inserción<br />

<strong>de</strong>l texto base. Realice un análisis <strong>de</strong> los algoritmos que utilizan cada método.<br />

La or<strong>de</strong>nación, clasificación <strong>de</strong> datos (en inglés, sort) es una operación que consistente en disponer<br />

un conjunto <strong>de</strong> datos en un or<strong>de</strong>n con respecto a un criterio <strong>de</strong>l conjunto. Una lista se dice que está<br />

or<strong>de</strong>nada por la clave k si la lista está en or<strong>de</strong>n ascen<strong>de</strong>nte o <strong>de</strong>scen<strong>de</strong>nte con respecto a esta clave.


Primer bimestre<br />

• La lista se dice que está en or<strong>de</strong>n ascen<strong>de</strong>nte si:<br />

i


Guía didáctica: Estructura <strong>de</strong> Datos<br />

22<br />

Ejercicio 1.7<br />

Dado el siguiente arreglo:<br />

48 45 35 32 51<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong><br />

Primer bimestre<br />

1) Realice la secuencia <strong>de</strong> or<strong>de</strong>namiento aplicando el algoritmo por selección (apóyese en el ejemplo<br />

<strong>de</strong> la página 357 <strong>de</strong>l texto base).<br />

2) Realice una ejecución manual con la codificación <strong>de</strong>l algoritmo por selección que se presenta en<br />

el texto base en la página 358<br />

En el Anexo 2, se encuentra un programa que permite or<strong>de</strong>nar los elementos <strong>de</strong><br />

un arreglo utilizando el algoritmo por selección.<br />

Ejercicio 1.8<br />

Dado los siguientes datos: 2, 5, 7, 1, 4, 8<br />

1) Realice gráficamente como se insertarían cada uno <strong>de</strong> los elementos en el arreglo (apóyese en el<br />

ejemplo <strong>de</strong> la página 359)<br />

2) Realice la ejecución manual con la codificación <strong>de</strong>l algoritmo <strong>de</strong> inserción que se presenta en el<br />

texto base en la página 360.<br />

1.3. Búsqueda<br />

En el Anexo 3, se encuentra un programa que permite or<strong>de</strong>nar los elementos <strong>de</strong><br />

un arreglo utilizando el algoritmo <strong>de</strong> inserción.<br />

Otra <strong>de</strong> las operaciones que se pue<strong>de</strong>n realizar con los arreglos son las búsquedas, por ejemplo si dispone<br />

<strong>de</strong> una nómina y <strong>de</strong>sea encontrar <strong>de</strong>terminado empleado entonces tiene que aplicar un algoritmo <strong>de</strong><br />

búsqueda a<strong>de</strong>cuado. Las búsquedas pue<strong>de</strong>n ser <strong>de</strong> dos formas: secuencial y binaria.<br />

Revise el apartado 10.7.3 Análisis <strong>de</strong> los algoritmos <strong>de</strong> búsqueda binaria,<br />

<strong>de</strong>l texto base. Analice <strong>de</strong>tenidamente las codificaciones <strong>de</strong> los algoritmos.<br />

Comúnmente la búsqueda secuencial se utiliza en arreglos <strong>de</strong>sor<strong>de</strong>nados, y la búsqueda binaria en<br />

arreglos or<strong>de</strong>nados. Una <strong>de</strong> las <strong>de</strong>sventajas <strong>de</strong> la Búsqueda Secuencial es la ineficiencia cuando se tiene<br />

una gran cantidad <strong>de</strong> datos por el tiempo que se tiene para realizar la búsqueda.


Primer bimestre<br />

Guía didáctica: Estructura <strong>de</strong> Datos<br />

En el Anexo 4 encontrará el programa que permite realizar la búsqueda secuencial<br />

en arreglos<br />

Tome en cuenta que cuando elabora algoritmos <strong>de</strong> búsqueda está condicionado a verificar si un<br />

elemento se encuentra o no en el arreglo, para ello se podría aplicar la siguiente sección <strong>de</strong> código.<br />

encontrado = 0;<br />

for {i=0; i


Guía didáctica: Estructura <strong>de</strong> Datos<br />

24<br />

Ejercicio 1.9<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong><br />

Primer bimestre<br />

Realice un algoritmo en C/C++ que permita realizar inserción <strong>de</strong> nuevos elementos al inicio y final <strong>de</strong>l<br />

arreglo. Tal como se indica a continuación:<br />

Arreglo Original:<br />

5 7 9 2 4<br />

Insertar el número 3 al Inicio<br />

3 5 7 9 2 4<br />

Insertar el número 10 al final<br />

3 5 7 9 2 4 10<br />

• Inserción en arreglo or<strong>de</strong>nados<br />

La inserción <strong>de</strong> nuevos elementos en arreglos or<strong>de</strong>nados <strong>de</strong>be realizarse exactamente en el lugar que<br />

le correspon<strong>de</strong> <strong>de</strong> acuerdo al or<strong>de</strong>n <strong>de</strong>l mismo, a diferencia <strong>de</strong> los arreglos <strong>de</strong>sor<strong>de</strong>nados en el cual se<br />

podía hacer al inicio, final o cualquier posición.<br />

• Modificación:<br />

Modificar un elemento significa reemplazar el valor existente por un nuevo dato, para cumplir con<br />

este propósito primeramente <strong>de</strong>bemos buscar el elemento, para lo cual se pue<strong>de</strong> utilizar la función <strong>de</strong><br />

búsqueda estudiada anteriormente (Secuencial) y asignarle el nuevo valor.<br />

• Eliminación:<br />

5 7 9 2<br />

5 7 8 2 4<br />

Nuevo valor a<br />

reemplazar por el 9 en la<br />

posición 2 <strong>de</strong>l arreglo.<br />

El método <strong>de</strong> búsqueda es sobre el cual gira el proceso <strong>de</strong> eliminación ya que se <strong>de</strong>be buscar el dato a<br />

eliminar y posteriormente mover el número que esta a la <strong>de</strong>recha <strong>de</strong>l elemento eliminado. Recuer<strong>de</strong> que<br />

al eliminar un elemento <strong>de</strong>l arreglo la posición <strong>de</strong>l cual se elimina queda vacío, por en<strong>de</strong> <strong>de</strong>be llenarse<br />

dicho espacio.<br />

Finalizado el presente apartado se plantean ejercicios que permiten afianzar los conocimientos, por<br />

lo que <strong>de</strong>berá realizar el respectivo análisis y <strong>de</strong>sarrollo basándose en los contenidos anteriormente<br />

tratados.


Primer bimestre<br />

Ejercicio 1.10<br />

Guía didáctica: Estructura <strong>de</strong> Datos<br />

Indique cuál es la diferencia o diferencias y semejanzas entre la búsqueda binaria y la búsqueda<br />

secuencial en arreglos.<br />

1.5. Arreglos <strong>de</strong> dos dimensiones.<br />

Luego <strong>de</strong> revisar los arreglos unidimensionales o <strong>de</strong> una dimensión (una sola fila con varias columnas),<br />

con las operaciones que se pue<strong>de</strong>n aplicar sobre estos ya po<strong>de</strong>mos estudiar los arreglos <strong>de</strong> dos<br />

dimensiones o matrices, la lógica <strong>de</strong> los programas que se aplican a las matrices no difieren mucho con<br />

las estudiadas previamente y los que revisó en el texto básico, en este caso se <strong>de</strong>be tener en cuenta que<br />

se aumenta un índice más y en consecuencia para recorrer la matriz se utilizan dos procesos o sentencias<br />

<strong>de</strong> control repetitivas.<br />

¿Cómo i<strong>de</strong>ntificar los arreglos bidimensionales?, les proponemos algunos ejemplos: ¿Qué tienen en<br />

común las tablas, las hojas <strong>de</strong> Excel y las matrices en matemáticas? ¿Ha i<strong>de</strong>ntificado lo que tienen en<br />

común?, pues si, lo común es que todos tienen filas y columnas, ahora en un arreglo bidimensional al<br />

igual que un arreglo unidimensional se tienen elementos e índices los cuales hacen referencia a la fila y<br />

columna en la cual se encuentra dispuesto el mismo, a continuación en la figura 1.2 se presenta <strong>de</strong> forma<br />

gráfica la estructura <strong>de</strong> una matriz.<br />

FILAS<br />

COLUMNAS<br />

0 1 3<br />

0 [0][0] [0][1] [0][2] [0][3]<br />

1 [1][0] [1][1] [1][2] [1][3]<br />

2 [2][0] [2][1] [2][2] [2][3]<br />

3 [3][0] [3][1] [3][2] [3][3]<br />

Figura 1.2: Estructura Gráfica <strong>de</strong> una matriz<br />

Junto con el texto básico y la complementaria que usted crea conveniente, en el capítulo relacionado a<br />

arreglos bidimensionales, vamos a <strong>de</strong>sarrollar algunos ejercicios que nos permitirán conocer algo más<br />

acerca <strong>de</strong> los arreglos bidimensionales y sus capacida<strong>de</strong>s en operaciones.<br />

Revise el apartado 9.4. Arrays multidimensionales, <strong>de</strong>l texto base. Analice<br />

<strong>de</strong>tenidamente y en lo posible conteste las inquietu<strong>de</strong>s que se mencionaron<br />

anteriormente.<br />

Recuer<strong>de</strong> que para <strong>de</strong>clarar un arreglo <strong>de</strong> dos dimensiones <strong>de</strong> tipo entero y <strong>de</strong> tamaño <strong>de</strong> 4 filas por 5<br />

columnas, se lo <strong>de</strong>fine <strong>de</strong> la siguiente manera:<br />

int matriz[4][5];<br />

Posición <strong>de</strong> un<br />

elemento <strong>de</strong>ntro<br />

<strong>de</strong> la matriz,<br />

posición fila1,<br />

columna2.<br />

Finalizado el presente apartado se plantea un ejercicio que permiten afianzar los conocimientos, por<br />

lo que <strong>de</strong>berá realizar el respectivo análisis y <strong>de</strong>sarrollo basándose en los contenidos anteriormente<br />

tratados.<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong> 25


Guía didáctica: Estructura <strong>de</strong> Datos<br />

26<br />

Ejercicio 1.11<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong><br />

Primer bimestre<br />

Diseñe y elabore un algoritmo en C/C++ que permita crear un arreglo <strong>de</strong> dimensión 3x4, y luego realice<br />

las operaciones <strong>de</strong> ingreso y lectura <strong>de</strong> los valores en la matriz.<br />

Esperamos que esta unidad haya cumplido las expectativas <strong>de</strong> adquirir conocimientos básicos y<br />

<strong>de</strong>strezas en el ámbito <strong>de</strong> las estructuras <strong>de</strong> datos estáticas, recuer<strong>de</strong> que si existe algún tema que aun<br />

no está claro se pue<strong>de</strong> comunicar con sus profesores / tutores a través <strong>de</strong>l EVA, correo electrónico, línea<br />

telefónica.<br />

Hemos culminado el estudio <strong>de</strong> la primera unidad y es hora <strong>de</strong> realizar una autoevaluación para<br />

i<strong>de</strong>ntificar el avance <strong>de</strong> su aprendizaje, le invitamos a <strong>de</strong>sarrollarla y le <strong>de</strong>seamos éxitos, recuer<strong>de</strong> que<br />

pue<strong>de</strong> comprobar sus respuestas con el solucionario ubicado al final <strong>de</strong> la guía didáctica.<br />

Autoevaluación 1<br />

1. Escriba una V si consi<strong>de</strong>ra que la afirmación es VERDADERA o una F si la consi<strong>de</strong>ra FALSA.<br />

1) Un array es una secuencia <strong>de</strong> objetos combinados <strong>de</strong> tipo entero y string. ( )<br />

2) Un arreglo está compuesto por índices ( )<br />

3) En el arreglo <strong>de</strong> texto AUTOEVALUACION, la letra ¨E¨ se encuentra en la posición 5. ( )<br />

4) El tamaño <strong>de</strong> un arreglo es máximo <strong>de</strong> 10 elementos. ( )<br />

5) La siguiente <strong>de</strong>claración <strong>de</strong> arreglo: int notas [8], permite <strong>de</strong>clarar un arreglo <strong>de</strong> 8<br />

elementos <strong>de</strong> tipo entero.<br />

6) Los arreglos unidimensionales contienen n filas. ( )<br />

7) Los arreglos bidimensionales son conocidos como tablas o matrices. ( )<br />

8) Los arreglos bidimensionales contienen columnas y filas. ( )<br />

9) Dentro <strong>de</strong> las operaciones con arreglos constan: lectura, escritura, inserción,<br />

búsqueda.<br />

10) Para acce<strong>de</strong>r a un elemento <strong>de</strong> una matriz que se encuentra en una posición<br />

específica se proce<strong>de</strong> Arreglo [1][3].<br />

( )<br />

( )<br />

( )


Primer bimestre<br />

Resuelva lo siguiente<br />

Parte A:<br />

Guía didáctica: Estructura <strong>de</strong> Datos<br />

2. Declare un arreglo <strong>de</strong> or<strong>de</strong>n “m x n”, pue<strong>de</strong> ser tres filas y tres columnas. Se <strong>de</strong>sea registrar la<br />

siguiente matriz:<br />

5 6 9<br />

10 1 7<br />

3 5 2<br />

3. Escriba el código para presentar los elementos <strong>de</strong> la matriz creada en el punto 1.<br />

4. Escriba el código para obtener los elementos <strong>de</strong> la diagonal principal <strong>de</strong> la matriz <strong>de</strong>clarada y<br />

páselos a un arreglo unidimensional.<br />

5. Presente gráficamente el arreglo unidimensional <strong>de</strong>l punto anterior or<strong>de</strong>nado <strong>de</strong> forma ascen<strong>de</strong>nte<br />

y forma <strong>de</strong>scen<strong>de</strong>nte.<br />

Parte B:<br />

6. Cuál es la diferencia entre un arreglo unidimensional y un arreglo bidimensional.<br />

7. ¿Cuáles son las dos formas <strong>de</strong> inicializar una estructura?<br />

8. Escriba los pasos que sigue el algoritmo <strong>de</strong> selección.<br />

Ir a solucionario<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong> 27


Guía didáctica: Estructura <strong>de</strong> Datos<br />

28<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong><br />

Primer bimestre<br />

Unidad 2: ESTRUCTURAS dINÁmICAS: ApUNTAdORES, LISTAS ENLAzAdAS<br />

Recursos educativos multimedia<br />

En la presente unidad estudiaremos otro tipo <strong>de</strong> estructuras <strong>de</strong> datos, las mismas que presentan una gran<br />

ventaja en cuanto se refiere a la flexibilidad <strong>de</strong> uso, si bien es cierto, el uso <strong>de</strong> arreglos nos ayuda mucho<br />

en el <strong>de</strong>sarrollo <strong>de</strong> aplicaciones, estos presentan la <strong>de</strong>sventaja que se podría reservar más memoria <strong>de</strong> la<br />

que se necesita o que en algún momento nos falte más <strong>de</strong> la reservada.<br />

Hasta ahora hemos estudiado algunas <strong>de</strong> las operaciones que se realizan sobre estructuras <strong>de</strong> datos<br />

estáticas, es <strong>de</strong>cir, que ocupan un valor fijo en memoria en el momento <strong>de</strong> compilación. A continuación<br />

estudiaremos estructuras <strong>de</strong> datos dinámicas las mismas que se crean dinámicamente en el momento<br />

<strong>de</strong> la ejecución <strong>de</strong>l programa, esto se logra mediante el uso <strong>de</strong> punteros o apuntadores.<br />

2.1. Apuntadores.<br />

Bien, antes <strong>de</strong> continuar retomemos el estudio <strong>de</strong>l texto básico para i<strong>de</strong>ntificar algunos conceptos <strong>de</strong><br />

interés e importancia en Punteros.<br />

Revisemos ahora el capítulo 12 <strong>de</strong>l texto base. Los apartados a revisar son: 12.1<br />

Direcciones en memoria, 12.2 Concepto <strong>de</strong> puntero, 12.3 Punteros NULL y<br />

void.<br />

En el texto básico se encuentran algunas <strong>de</strong>finiciones <strong>de</strong> apuntadores, pues revisemos otra <strong>de</strong>finición<br />

que también explica el tema <strong>de</strong> punteros: “Un puntero es un tipo <strong>de</strong> dato simple que contiene la dirección<br />

<strong>de</strong> una variable o estructura, en vez <strong>de</strong> un valor <strong>de</strong> dato como lo estudiamos con los arreglos”.<br />

Tenga presente que los datos en punteros se almacenan en la memoria RAM en posiciones especificas, a<br />

las mismas que se acce<strong>de</strong>n mediante valores hexa<strong>de</strong>cimales.<br />

Bien, ¿hemos revisado la <strong>de</strong>finición <strong>de</strong> lo que es un puntero? se podría encontrar más <strong>de</strong> una en la<br />

bibliografía complementaria o en las referencias web. Ahora que ha revisado la teoría <strong>de</strong> punteros<br />

revisemos gráficamente como podría representar un puntero:<br />

P<br />

n 850


Primer bimestre<br />

Guía didáctica: Estructura <strong>de</strong> Datos<br />

Explicando la representación gráfica anterior, se pue<strong>de</strong> <strong>de</strong>cir que el valor <strong>de</strong> un puntero (p) es una<br />

dirección(n). La dirección <strong>de</strong>pen<strong>de</strong> <strong>de</strong>l estado <strong>de</strong> la computadora en la cual se ejecuta el programa.<br />

Está claro ¿qué es un puntero y cómo se representan en memoria los mismos?, les invito a que continuemos<br />

el estudio <strong>de</strong> las estructuras <strong>de</strong> datos dinámicas las cuales empezamos en el siguiente apartado.<br />

Finalizado el presente apartado se plantean ejercicios que permiten afianzar los conocimientos, por<br />

lo que <strong>de</strong>berá realizar el respectivo análisis y <strong>de</strong>sarrollo basándose en los contenidos anteriormente<br />

tratados.<br />

Ejercicio 2.1<br />

Complete el cuadro explicando que es lo que realiza cada <strong>de</strong>finición<br />

int *ptr1; Puntero a un tipo <strong>de</strong> dato entero (int).<br />

long *ptr2;<br />

char *ptr3;<br />

float *f;<br />

Ejercicio 2.2<br />

Analice la siguiente codificación y ¿Cuál sería la salida?<br />

#inclu<strong>de</strong> <br />

#inclu<strong>de</strong> <br />

void main(){<br />

}<br />

int n = 10;<br />

long *dato;<br />

float *f;<br />

int* p = &n;<br />

int *q;<br />

q = p;<br />

printf(“n = %d\n“,n);<br />

printf(“&n = %d:\n“,&n);<br />

printf(“p = %d:\n“,p);<br />

printf(“&p = %d:\n“,&p);<br />

printf(“q = %d:\n“,q);<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong> 29


Guía didáctica: Estructura <strong>de</strong> Datos<br />

2.2. Estructura <strong>de</strong> datos dinámicas.<br />

30<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong><br />

Primer bimestre<br />

Pasaremos a estudiar las estructuras <strong>de</strong> datos dinámicas, para ello es necesario revisar el texto básico.<br />

Revisemos ahora el capítulo 13 <strong>de</strong>l texto base. Los apartados a revisar son: 13.1<br />

Gestión dinámica <strong>de</strong> memoria, 13.2 función <strong>de</strong> asignación <strong>de</strong> memoria<br />

malloc().<br />

Recuer<strong>de</strong> que la <strong>de</strong>finición <strong>de</strong> un apuntador, se la realiza <strong>de</strong> la siguiente manera:<br />

int *p;<br />

Luego se <strong>de</strong>be asignar el respectivo espacio <strong>de</strong> memoria a la variable apuntador, especialmente cuando<br />

se trabaja con tipos compuestos, como es el caso <strong>de</strong> las estructuras. La asignación <strong>de</strong> memoria sería<br />

entonces:<br />

P = (int*)malloc(sizeof(int))<br />

Una vez revisada la parte teórica en el texto básico y apoyado en lo que usted pue<strong>de</strong> consultar en la<br />

bibliografía complementaria o web dispóngase a realizar los siguientes ejercicios.<br />

2.3. Listas enlazadas.<br />

Una lista enlazada se conoce como una colección o secuencia <strong>de</strong> elementos que se encuentran dispuestos<br />

uno tras otro en las que cada elemento se conecta con el siguiente elemento por un enlace o puntero.<br />

Revisemos ahora el capítulo 18 <strong>de</strong>l texto base. Los apartados a revisar son: 18.1.<br />

Fundamentos teóricos, 18.2. Clasificación <strong>de</strong> las listas enlazadas y 18.3.<br />

Operaciones en listas enlazadas.<br />

Para po<strong>de</strong>r <strong>de</strong>clarar y utilizar las listas, <strong>de</strong>bería conocer cuales son los elementos que componen un<br />

puntero, ¿recuerda cuáles son?, revisemos el siguiente gráfico:<br />

Figura 2.1 Elementos <strong>de</strong> un puntero en lista enlazada.<br />

Es necesario diferenciar entre las dos entida<strong>de</strong>s implicadas en el apuntamiento:<br />

La variable puntero (Quien hace el apuntamiento) [.]<br />

La variable apuntada (A quien se apunta) [ ]<br />

Si revisamos el texto básico podremos i<strong>de</strong>ntificar ejemplos <strong>de</strong> <strong>de</strong>claración <strong>de</strong> listas enlazadas.


Primer bimestre<br />

Guía didáctica: Estructura <strong>de</strong> Datos<br />

Para profundizar en los temas <strong>de</strong> listas enlazadas les invito a revisar la temática en el texto básico en la cual<br />

se explica los elementos <strong>de</strong> las listas enlazadas como son enlaces, dirección <strong>de</strong> memoria, representación<br />

en memoria, etc., es necesario que revise los ejercicios resueltos que se indican en el mismo.<br />

Ahora Bien, revisemos como vamos evolucionando en el estudio <strong>de</strong> las estructuras <strong>de</strong> datos dinámicas,<br />

para ello <strong>de</strong>sarrolle los siguientes ejercicios.<br />

Ejercicio 2.3<br />

Proponga 5 ejemplos <strong>de</strong> listas enlazadas que ud. pueda i<strong>de</strong>ntificar en la vida diaria.<br />

a) Vagones <strong>de</strong> un tren.<br />

b) _________________<br />

c) _________________<br />

d) _________________<br />

e) _________________<br />

Ejercicio 2.4<br />

Represente gráficamente utilizando la estructura <strong>de</strong> las listas los vagones <strong>de</strong> un tren, por ejemplo<br />

vagón1, vagón2, vagón3,…., vagón n.., ubique el nodo inicial, los nodos siguientes, el nodo final y el<br />

enlace correspondiente.<br />

2.4. Clasificación <strong>de</strong> las listas enlazadas.<br />

Dependiendo <strong>de</strong> los datos que se <strong>de</strong>sea representar y forma en la que se va a interactuar se pue<strong>de</strong>n<br />

utilizar diferentes tipos. Es necesario revisar el texto base.<br />

Revise el apartado 18.2. Clasificación <strong>de</strong> las listas <strong>de</strong>l texto base.<br />

Es importante tener claro las cuatro categorías que se pue<strong>de</strong>n implementar las listas enlazadas. A<br />

continuación se indican gráficamente estas categorías<br />

• Lista simplemente enlazadas<br />

• Lista doblemente enlazadas<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong> 31


Guía didáctica: Estructura <strong>de</strong> Datos<br />

• Lista circular simplemente enlazada<br />

• Lista circular doblemente enlazada<br />

32<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong><br />

Primer bimestre<br />

Finalizado el presente apartado se plantean ejercicios que permiten afianzar los conocimientos, por<br />

lo que <strong>de</strong>berá realizar el respectivo análisis y <strong>de</strong>sarrollo basándose en los contenidos anteriormente<br />

tratados.<br />

Ejercicio 2.4<br />

Mencione una <strong>de</strong>scripción y características <strong>de</strong> cada una <strong>de</strong> las categorías <strong>de</strong> las cuatro listas enlazadas.<br />

¿Cómo le fue en el <strong>de</strong>sarrollo <strong>de</strong>l ejercicio anterior?, esperemos que muy bien, sin embargo si tiene alguna<br />

dificultad en realizar el mismo le invitamos para que pueda contactarnos a través <strong>de</strong> correo electrónico,<br />

EVA, u otro medio <strong>de</strong> comunicación, recuer<strong>de</strong> también apoyarse <strong>de</strong> la bibliografía complementaria que<br />

Ud. crea conveniente.<br />

Si recordamos un poco las estructuras <strong>de</strong> datos estática, habíamos hablado <strong>de</strong> operaciones que se<br />

realizaban sobre las mismas, ahora con el uso <strong>de</strong> listas vamos a revisar que operaciones po<strong>de</strong>mos realizar<br />

sobre las mismas.<br />

2.5. Operaciones con listas enlazadas.<br />

Al igual que cuando revisamos la temática <strong>de</strong> arreglos cuando trabajamos con listas enlazadas po<strong>de</strong>mos<br />

realizar muchas operaciones, <strong>de</strong>ntro <strong>de</strong> las cuales se <strong>de</strong>staca la creación, eliminación, lectura, inserción,<br />

actualización, entre otras, revisaremos conjuntamente con el texto básico algunas <strong>de</strong> ellas.<br />

Declaración <strong>de</strong> un nodo<br />

Revise el apartado 18.3. Operaciones en listas enlazadas <strong>de</strong>l texto base.<br />

En los capítulos anteriores tanto <strong>de</strong> la guía didáctica como <strong>de</strong>l texto básico revisamos como <strong>de</strong>clarar<br />

un nodo ya que es lo primordial cuando se trabaja con listas y se realiza operaciones sobre las mismas,<br />

recor<strong>de</strong>mos dicha <strong>de</strong>claración con la cual empezamos el estudio <strong>de</strong> las operaciones en listas enlazadas,<br />

revisemos la siguiente <strong>de</strong>claración.


Primer bimestre<br />

Guía didáctica: Estructura <strong>de</strong> Datos<br />

class Nodo {<br />

string valor;<br />

struct Nodo* enlace;<br />

}<br />

El poseer una <strong>de</strong>claración class, permitirá agrupar el tipo <strong>de</strong> dato y el apuntador o enlace al siguiente<br />

nodo. En el texto básico encontrará una <strong>de</strong>claración similar y algunas adicionales para empezar a operar<br />

sobre listas enlazadas.<br />

Recuer<strong>de</strong> que en una lista enlazada siempre vamos a encontrar y <strong>de</strong>finir dos nodos<br />

los cuales son cabecera y cola.<br />

Pasos para construir Algoritmos que permitan trabajar con listas.<br />

Para po<strong>de</strong>r crear algoritmos que permitan insertar nodos al inicio, medio, final y realizar la lectura <strong>de</strong><br />

los nodos es primordial conocer como construir una lista que contenga los nodos principales como son<br />

cabecera y cola, por tanto les sugiero revisar los pasos que se requieren para construir e inicializar una<br />

lista con elementos, los pasos son:<br />

1) Declarar el tipo <strong>de</strong> dato y puntero <strong>de</strong> cabeza.<br />

2) Asignar memoria para un elemento <strong>de</strong>l tipo <strong>de</strong>finido en el ptr_nuevo.<br />

3) Crear iterativamente el primer elemento (cabeza) y los elementos sucesivos <strong>de</strong> una lista enlazada.<br />

4) Repetir hasta que no haya mas entradas para el elemento.<br />

En el Anexo 3 y 4 se propone un ejemplo <strong>de</strong> la creacion y lectura <strong>de</strong> las listas enlazadas, en base a éste<br />

pue<strong>de</strong> realizar las <strong>de</strong>más operaciones que se pue<strong>de</strong>n llevar a cabo con punteros, le recomiendo en base<br />

a la revisión <strong>de</strong>l texto básico <strong>de</strong>sarrollar los ejercicios <strong>de</strong> listas enlazadas y si tiene algún inconveniente<br />

no du<strong>de</strong> en ponerse en contacto con sus profesores / tutores.<br />

En el Anexo 6 y 7 encontrará código <strong>de</strong> ejemplos <strong>de</strong> listas enlazadas, por favor analice<br />

y codifique los mismos.<br />

Esperamos haya captado las i<strong>de</strong>as principales en lo relacionado a las listas enlazadas, este será el punto <strong>de</strong><br />

partida para po<strong>de</strong>r enten<strong>de</strong>r y compren<strong>de</strong>r las listas doblemente enlazadas que son parte fundamental<br />

en las estructuras <strong>de</strong> datos dinámicas.<br />

Listas Doblemente Enlazadas<br />

Como hemos evolucionado en el estudio <strong>de</strong> las listas enlazadas y una vez conocida su estructura,<br />

<strong>de</strong>finición y uso, po<strong>de</strong>mos empezar con el estudio <strong>de</strong> las listas doblemente enlazadas, sin embargo<br />

<strong>de</strong>bemos empezar i<strong>de</strong>ntificando las semejanzas y diferencias entre simplemente y doblemente<br />

enlazadas, le invito a revisar el texto básico y la complementaria necesaria para luego <strong>de</strong>sarrollar los<br />

siguientes ejercicios <strong>de</strong> parte teórica.<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong> 33


Guía didáctica: Estructura <strong>de</strong> Datos<br />

34<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong><br />

Primer bimestre<br />

Finalizado el presente apartado se plantean ejercicios que permiten afianzar los conocimientos, por<br />

lo que <strong>de</strong>berá realizar el respectivo análisis y <strong>de</strong>sarrollo basándose en los contenidos anteriormente<br />

tratados.<br />

Ejercicio 2.5<br />

Mencione una <strong>de</strong>scripción y características <strong>de</strong> cada una <strong>de</strong> las categorías <strong>de</strong> las cuatro<br />

En el siguiente cuadro ubique cuales son las diferencias y semejanzas entre listas enlazadas y listas<br />

doblemente enlazadas, tome en cuenta también la forma <strong>de</strong> <strong>de</strong>claración, uso, lectura, etc.<br />

LISTAS ENLAZADAS<br />

LISTAS<br />

DOBLEMENTE<br />

ENLAZADAS<br />

Ejercicio 2.6<br />

DIFERENCIAS SEMEJANZAS<br />

DIFERENCIAS SEMEJANZAS<br />

En la siguiente representación gráfica i<strong>de</strong>ntifique los elementos que componen una lista doblemente<br />

enlazada.<br />

Luego <strong>de</strong> haber realizado los ejercicios anteriores po<strong>de</strong>mos empezar a estudiar los temas teóricos y<br />

prácticos que se plantean en el texto básico y también en la complementaria acerca <strong>de</strong> las listas<br />

doblemente enlazadas, tal como lo habiamos hecho con las listas enlazadas en el Anexo 5 se propone<br />

un ejemplo <strong>de</strong> <strong>de</strong>claración y lectura <strong>de</strong> listas doblemente enlazadas, con las cuales ya po<strong>de</strong>mos empezar<br />

a revisar las operaciones que se pue<strong>de</strong>n realizar con las mismas.<br />

En el Anexo 8 encontrará ejemplos con código fuente <strong>de</strong> listas doblemente enlazadas,<br />

le sugerimos revisarlos.<br />

Muy bien estimados estudiantes, esperamos que en la presente unidad la temática estudiada y analizada<br />

haya sido <strong>de</strong> provecho para fortalecer y aumentar su conocimiento <strong>de</strong> las estructuras <strong>de</strong> datos, ahora les<br />

invitamos a <strong>de</strong>sarrollar la siguiente autoevaluación, la misma que permitirá conocer los vacíos que aun<br />

podrían existir y que <strong>de</strong>berá revisarlos con más profundidad y concentración; si existiese alguna duda<br />

o comentario contacte con sus profesores / tutores a través <strong>de</strong>l EVA, correo electrónico, línea telefónica.


Primer bimestre<br />

Autoevaluación 2<br />

Guía didáctica: Estructura <strong>de</strong> Datos<br />

1. Escriba una V si consi<strong>de</strong>ra que la afirmación es VERDADERA o una F si la consi<strong>de</strong>ra FALSA.<br />

1. Una lista enlazada consta <strong>de</strong> un número <strong>de</strong> elementos y cada elemento tiene dos<br />

componentes (campos), un puntero al siguiente elemento <strong>de</strong> la lista y un valor,<br />

que pue<strong>de</strong> ser <strong>de</strong> cualquier tipo.<br />

( )<br />

1. En las listas doblemente enlazadas, cada nodo tiene dos enlaces, uno a su nodo<br />

pre<strong>de</strong>cesor y el otro a su nodo sucesor.<br />

( )<br />

2. Los punteros permiten un uso más eficiente <strong>de</strong> la memoria. ( )<br />

3. El recorrido <strong>de</strong> una lista enlazada significa pasar solo por el nodo inicial y final <strong>de</strong><br />

la lista.<br />

( )<br />

4. Las listas son consi<strong>de</strong>radas estructuras <strong>de</strong> datos estáticas. ( )<br />

5. Las listas enlazadas están dispuestos uno a continuación <strong>de</strong> otro conectadas a<br />

través <strong>de</strong> un puntero.<br />

( )<br />

6. Las listas doblemente enlazadas contienen tres enlaces, uno que parte <strong>de</strong>s<strong>de</strong> el<br />

nodo cabeza al siguiente nodo y otro que parte <strong>de</strong>l nodo cabeza al anterior nodo.<br />

( )<br />

7. Cuando una lista no contiene un nodo el puntero cabeza es nulo. ( )<br />

8. El primer nodo <strong>de</strong> una lista enlazada se conoce como puntero cola. ( )<br />

9. Una lista doblemente enlazada es una lista en la que cada nodo tiene un puntero<br />

a su sucesor y otro a su pre<strong>de</strong>cesor.<br />

( )<br />

RESUELVA LA SIGUIENTE PARTE PRÁCTICA<br />

1) Cree una lista enlazada en C/C++ que permita representar la secuencia 1,2,3,….10.<br />

1 2 3 4 10<br />

2) Sobre la lista creada en el punto 1, indique la función qu permite encontrar el dato <strong>de</strong>l nodo<br />

5.<br />

Ir a solucionario<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong> 35


Segundo bimeStre<br />

7.2. Planificación para el trabajo <strong>de</strong>l alumno<br />

COMPETENCIAS<br />

ESPECÍFICAS<br />

Analizar las necesida<strong>de</strong>s<br />

<strong>de</strong> conocimiento<br />

necesarias para resolver<br />

un problema.<br />

Compren<strong>de</strong>r, analizar<br />

y resolver problemas<br />

aplicando los métodos <strong>de</strong><br />

la ciencia y la ingeniería.<br />

Aplicar la lógica<br />

matemática en el<br />

contexto <strong>de</strong> las Ciencias<br />

<strong>de</strong> la Computación, con<br />

proyección, al diseño <strong>de</strong><br />

circuitos, programación,<br />

análisis y <strong>de</strong>sarrollo <strong>de</strong><br />

algoritmos.<br />

Diseño e Implementación<br />

<strong>de</strong> programas <strong>de</strong><br />

aplicación.<br />

Diagnóstico y solución <strong>de</strong><br />

problemas en software.<br />

COMPETENCIAS<br />

ESPECÍFICAS<br />

OBJETIVOS DE<br />

APRENDIZAJE<br />

• I<strong>de</strong>ntifica los tipos<br />

<strong>de</strong> árboles <strong>de</strong> forma<br />

concºeptual y gráfica.<br />

• Reconoce los métodos<br />

para recorrer un árbol<br />

binario.<br />

• Propone una forma<br />

<strong>de</strong> representación<br />

estructurada para los<br />

árboles binarios<br />

• Propone soluciones<br />

acor<strong>de</strong>s a la necesidad<br />

a través <strong>de</strong> los árboles<br />

binarios.<br />

• Propone soluciones<br />

informáticas para el<br />

almacenamiento <strong>de</strong><br />

información.<br />

• I<strong>de</strong>ntifica el tipo <strong>de</strong> acceso<br />

que se <strong>de</strong>be realizar en un<br />

<strong>de</strong>terminado archivo.<br />

• Reconoce el tipo <strong>de</strong><br />

archivo <strong>de</strong>l que se tiene<br />

que extraer los datos<br />

• I<strong>de</strong>ntifica y representa<br />

datos en grafos.<br />

• Recnoce el tipo <strong>de</strong> grafo<br />

y sus formas <strong>de</strong> lectura<br />

(recorrido)<br />

• Realiza operaciones para<br />

extarer la información <strong>de</strong><br />

los grafos.<br />

OBJETIVOS DE<br />

APRENDIZAJE<br />

SEGUNDO BIMESTRE<br />

CONTENIDOS<br />

CRONOGRAMA<br />

ORIENTATIVO<br />

Unida<strong>de</strong>s/Temas Tiempo estimado<br />

UNIDAD 3:<br />

Semana 1 y 2<br />

3.1. Árboles.<br />

12 horas <strong>de</strong> autoestudio<br />

3.2. Terminología.<br />

8 horas <strong>de</strong> interacción con<br />

3.3. Aplicaciones <strong>de</strong> los<br />

árboles.<br />

el EVA y tutorías<br />

3.4. Árboles binarios.<br />

3.5. Recorridos en arboles<br />

binarios.<br />

3.6. Autoevaluación 3.<br />

UNIDAD 4:<br />

4.1. Formas <strong>de</strong> acceso.<br />

4.2. Flujos.<br />

4.3. Tipo <strong>de</strong> dato FILE.<br />

4.4. Abrir un archivo.<br />

4.5. Escribir datos.<br />

4.6. Lectura <strong>de</strong> datos.<br />

4.7. Cerrar el archivo.<br />

4.8. Autoevaluación 4<br />

UNIDAD 5:<br />

5.1Componentes <strong>de</strong> un<br />

grafo.<br />

5.2 Definiciones.<br />

5.3 Representación<br />

5.4 Autoevaluación 5<br />

CONTENIDOS<br />

Semana 3 y 4<br />

12 horas <strong>de</strong> autoestudio<br />

8 horas <strong>de</strong> interacción con<br />

el EVA y tutorías<br />

Semana 5 y 6<br />

12 horas <strong>de</strong> autoestudio<br />

8 horas <strong>de</strong> interacción con<br />

el EVA y tutorías<br />

CRONOGRAMA<br />

ORIENTATIVO<br />

Unida<strong>de</strong>s/Temas Tiempo estimado<br />

UNIDADES DE LA 3 A Semana 7 y 8<br />

LA 5<br />

12 horas <strong>de</strong> autoestudio<br />

8 horas <strong>de</strong> interacción con<br />

el EVA y tutorías<br />

Guía didáctica: Estructura <strong>de</strong> Datos<br />

ACTIVIDADES DE<br />

APRENDIZAJE<br />

Lectura <strong>de</strong>l capítulo 20(Árboles)<br />

<strong>de</strong>l texto básico tal como se<br />

indica en la guía didáctica<br />

complementado con las<br />

activida<strong>de</strong>s <strong>de</strong> la unidad 3 <strong>de</strong> la<br />

guía didáctica.<br />

Desarrollo <strong>de</strong> la autoevaluación<br />

que se indica en la guía didactica.<br />

Realizar la interacción en el<br />

EVA y resolviendo los ejercicios<br />

prácticos que se plantean<br />

Lectura <strong>de</strong>l capítulo 15(Entradas<br />

y salidas por archivos) <strong>de</strong>l texto<br />

básico tal como se indica en la<br />

guía didáctica complementado<br />

con las activida<strong>de</strong>s <strong>de</strong> la unidad 4<br />

<strong>de</strong> la guía didáctica.<br />

Desarrollo <strong>de</strong> la autoevaluación<br />

que se indica en la guía didactica.<br />

Realizar la interacción en el<br />

EVA y resolviendo los ejercicios<br />

prácticos que se plantean<br />

Estudio autónomo <strong>de</strong> la quinta<br />

unidad.<br />

Lectura analítica.<br />

Desarrollo <strong>de</strong> activida<strong>de</strong>s<br />

recomendadas en el texto básico<br />

y en la guía didáctica.<br />

Interacción en el EVA.<br />

Finalizar con el <strong>de</strong>sarrollo <strong>de</strong> la<br />

evaluación a distancia.<br />

ACTIVIDADES DE<br />

APRENDIZAJE<br />

Preparación para evaluación<br />

presencial <strong>de</strong>l segundo bimestre.<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong> 37


Guía didáctica: Estructura <strong>de</strong> Datos<br />

38<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong><br />

Segundo bimeStre<br />

7.4. Orientaciones específicas para el aprendizaje por competencias<br />

Unidad 3: ESTRUCTURAS dE dATOS NO LINEALES, ÁRBOLES<br />

Recursos educativos multimedia<br />

Recursos educativos multimedia<br />

En la unidad anterior estudiamos las estructuras <strong>de</strong> datos dinámicas, particularmente las listas enlazadas<br />

y tal como nos pudimos dar cuenta tienen algunas ventajas: en primer lugar se pue<strong>de</strong>n crear nodos en<br />

tiempo <strong>de</strong> ejecución; es <strong>de</strong>cir, conforme se necesite almacenar mas información se van creando dichos<br />

elementos; y por otra parte esta es una estructura lineal puesto que existe un solo camino para recorrer<br />

sus elementos <strong>de</strong>s<strong>de</strong> el principio hasta el último elemento.<br />

En la presente unidad el tema central <strong>de</strong> estudio son los árboles, los cuales también son estructuras<br />

dinámicas puesto que se crean mediante punteros, pero a diferencia <strong>de</strong> las listas enlazadas estas<br />

estructuras son <strong>de</strong> tipo jerárquico, lo cual quiere <strong>de</strong>cir que la información está organizada en varios<br />

niveles y como podremos ver más a<strong>de</strong>lante existen muchos caminos para recorrer la estructura <strong>de</strong>s<strong>de</strong> el<br />

primer elemento o raíz hasta los elementos <strong>de</strong> los niveles más avanzados.<br />

Para el estudio <strong>de</strong> esta unidad estaremos ayudandonos <strong>de</strong>l texto base concretamente <strong>de</strong>l capítulo 20.<br />

3.1. Árboles.<br />

Enten<strong>de</strong>r las estructuras <strong>de</strong> datos pue<strong>de</strong> ser tan simple si lo miramos <strong>de</strong>s<strong>de</strong> un punto <strong>de</strong> vista muy<br />

objetivo, relacionemos pues los árboles <strong>de</strong> nuestro medio ambiente con estas estructuras <strong>de</strong> datos.<br />

Un árbol implica una estructura en la cual los datos se organizan <strong>de</strong> modo que los elementos <strong>de</strong><br />

información están relacionados entre sí a través <strong>de</strong> ramas. El árbol genealógico es el ejemplo típico más<br />

representativo <strong>de</strong>l concepto <strong>de</strong> árbol general.


Segundo bimeStre<br />

Guía didáctica: Estructura <strong>de</strong> Datos<br />

Un árbol consta <strong>de</strong> un conjunto finito <strong>de</strong> elementos, <strong>de</strong>nominados nodos y un conjunto finito <strong>de</strong> líneas<br />

dirigidas, <strong>de</strong>nominadas ramas, que conectan los nodos. El número <strong>de</strong> ramas asociado con un nodo es el<br />

grado <strong>de</strong>l nodo. Si un árbol no está vacío, entonces el primer nodo se llama raíz.<br />

Revise el apartado 20.1. Árboles generales <strong>de</strong>l texto base.<br />

Como se podrá dar cuenta el estudio <strong>de</strong> los árboles es muy simple puesto que ésta estructura está muy<br />

relacionado con objetos <strong>de</strong> nuestro entorno físico, a continuación estudiemos los términos que <strong>de</strong>finen<br />

las diferentes características <strong>de</strong> un árbol.<br />

3.2. Terminología.<br />

La representación básica <strong>de</strong>l árbol requiere que se utilice la terminología apropiada, por lo que lo invito<br />

a revisar el tema en el texto básico.<br />

Revise el apartado 20.1.1. Terminología básica <strong>de</strong>l texto base.<br />

En la figura 3.1, se realiza una representación gráfica <strong>de</strong> un árbol en la que se <strong>de</strong>stacan sus atributos.<br />

Figura 3.1 Terminología <strong>de</strong> árboles<br />

En base a la figura 3.1 revisemos que componentes <strong>de</strong>l árbol correspon<strong>de</strong>n a cada uno <strong>de</strong> los términos<br />

<strong>de</strong>finidos:<br />

Padres:<br />

Hijos:<br />

Descendientes <strong>de</strong> A:<br />

Ascendientes <strong>de</strong> C:<br />

Hermanos:<br />

Hojas:<br />

Profundidad:<br />

A, B, F<br />

B, E, F, C, D, G, H, I<br />

B, C, D<br />

B, A<br />

{B, E, F}, {C, D}, {G, F, I}<br />

C, D, E, G, H, I<br />

3<br />

BCD, E, FGHI<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong> 39


Guía didáctica: Estructura <strong>de</strong> Datos<br />

40<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong><br />

Segundo bimeStre<br />

Los árboles pue<strong>de</strong>n representarse <strong>de</strong> varias maneras, aunque la forma más común es mediante grafos,<br />

tal como se muestra en la figura 3.2.<br />

Figura 3.2 Representación gráfica <strong>de</strong> un árbol<br />

Continuando con el estudio <strong>de</strong> los árboles vamos a <strong>de</strong>sarrollar el siguiente ejercicio, es importante que<br />

los conceptos que<strong>de</strong>n claros los cuales son la base para compren<strong>de</strong>r los conceptos posteriores.<br />

Finalizado el presente apartado se plantea un ejercicio que permiten afianzar los conocimientos, por<br />

lo que <strong>de</strong>berá realizar el respectivo análisis y <strong>de</strong>sarrollo basándose en los contenidos anteriormente<br />

tratados.<br />

Ejercicio 3.1<br />

Consulte en el texto básico base o en cualquier fuente los conceptos relacionados con árboles que se<br />

indican a continuación:<br />

Nodo raíz: ....................................................................................................................<br />

Nodo padre: ....................................................................................................................<br />

Nodo hijo ....................................................................................................................<br />

Nodos<br />

<strong>de</strong>scendientes<br />

....................................................................................................................<br />

Nodos ascendientes ....................................................................................................................<br />

Nodos hermanos ....................................................................................................................<br />

Nodo hojas ....................................................................................................................<br />

Nodo interno ....................................................................................................................<br />

Nodo no terminal ....................................................................................................................<br />

Nivel ....................................................................................................................<br />

Arcos ....................................................................................................................<br />

Ramas ....................................................................................................................<br />

Camino ....................................................................................................................<br />

Altura ....................................................................................................................


Segundo bimeStre<br />

Guía didáctica: Estructura <strong>de</strong> Datos<br />

Subárbol ....................................................................................................................<br />

Árbol equilibrado ....................................................................................................................<br />

Muy bien, ¿Le resultó interesante el ejercicio propuesto?, seguro que si ya que en él se pue<strong>de</strong>n ubicar<br />

algunos conceptos que son básicos para el presente estudio, ahora que hemos revisado la parte teórica<br />

<strong>de</strong> los árboles es importante ver la importancia y aplicabilidad <strong>de</strong> los mismos, revisemos esta temática<br />

a continuación.<br />

3.3. Aplicaciones <strong>de</strong> los árboles.<br />

Pensemos que las Estructuras <strong>de</strong> Datos existen para solucionar problemas <strong>de</strong> nuestro entorno, caso<br />

contrario no tendrá razón su estudio y aplicación en nuestros programas, revisemos las aplicaciones que<br />

tienen este tipo <strong>de</strong> estructuras las mismas que se pue<strong>de</strong>n utilizar para:<br />

• Representar fórmulas matemáticas.<br />

• Organizar a<strong>de</strong>cuadamente la información.<br />

• Registrar la historia <strong>de</strong> un campeonato <strong>de</strong> tenis.<br />

• Construir un árbol genealógico.<br />

• Análisis <strong>de</strong> circuitos eléctricos.<br />

Como parte <strong>de</strong> su estudio, le invitamos a <strong>de</strong>sarrollar el siguiente ejercicio que está ligado a las aplicaciones<br />

<strong>de</strong> árboles.<br />

Finalizado el presente apartado se plantea ejercicio que permiten afianzar los conocimientos, por lo que<br />

<strong>de</strong>berá realizar el respectivo análisis y <strong>de</strong>sarrollo basándose en los contenidos anteriormente tratados.<br />

Finalizado el presente apartado se plantean ejercicios que permiten afianzar los conocimientos, por<br />

lo que <strong>de</strong>berá realizar el respectivo análisis y <strong>de</strong>sarrollo basándose en los contenidos anteriormente<br />

tratados.<br />

Ejercicio 3.2<br />

Investigue por lo menos 5 aplicaciones adicionales <strong>de</strong> los árboles.<br />

..................................................................................................................................................<br />

..................................................................................................................................................<br />

..................................................................................................................................................<br />

..................................................................................................................................................<br />

..................................................................................................................................................<br />

Esperamos esté comprendiendo la parte teórica <strong>de</strong> árboles ahora antes <strong>de</strong> empezar a codificar un árbol<br />

al igual que las <strong>de</strong>más estructuras <strong>de</strong> datos es necesario conocer su representación, le invitamos a revisar<br />

la forma <strong>de</strong> representar un árbol.<br />

3.4. Árboles binarios.<br />

En este tipo <strong>de</strong> árbol ningún nodo pue<strong>de</strong> tener más <strong>de</strong> dos subárboles, es <strong>de</strong>cir cada nodo pue<strong>de</strong> tener<br />

cero, uno o dos hijos (subárboles).<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong> 41


Guía didáctica: Estructura <strong>de</strong> Datos<br />

42<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong><br />

Segundo bimeStre<br />

Es momento <strong>de</strong> revisar el apartado 20.2. Árboles binarios <strong>de</strong>l texto base.<br />

Se conoce el nodo <strong>de</strong> la izquierda como hijo izquierdo y el nodo <strong>de</strong> la <strong>de</strong>recha como hijo <strong>de</strong>recho.<br />

5<br />

3 8<br />

2 4 7 8<br />

Figura 3.3 Representación gráfica <strong>de</strong> un árbol binario<br />

Un árbol binario es una estructura recursiva, cada nodo es la raíz <strong>de</strong> su propio subárbol y tiene hijos, que<br />

son raíces <strong>de</strong> árboles llamados subárboles <strong>de</strong>recho e izquierdo <strong>de</strong>l nodo, respectivamente.<br />

Es momento <strong>de</strong> revisar el apartado 20.2. Árboles binarios <strong>de</strong>l texto base.<br />

Como pue<strong>de</strong> ver un árbol binario tiene ciertas restricciones (máximo dos subárboles) los cual lo hace<br />

más práctico a la hora <strong>de</strong> programar esta estructura y una <strong>de</strong> las tareas principales cuando <strong>de</strong>sarrollamos<br />

aplicaciones con este tipo <strong>de</strong> árbol es el recorrido, el mismo que lo estudiaremos a continuación.<br />

3.5. Recorridos en árboles binarios.<br />

Una <strong>de</strong> las tareas básicas que se realiza en un árbol binario es el recorrido lo cual significa visitar los<br />

nodos <strong>de</strong>l árbol en forma sistemática. Un recorrido <strong>de</strong> un árbol binario, requiere que cada nodo <strong>de</strong>l árbol<br />

sea procesado (visitado) una vez y sólo una en una secuencia <strong>de</strong>terminada.<br />

Es momento <strong>de</strong> revisar el apartado 20.6. Recorrido <strong>de</strong> un árbol <strong>de</strong>l texto base.<br />

Existen tres formas diferentes <strong>de</strong> efectuar el recorrido y todas ellas <strong>de</strong> naturaleza recursiva, éstas son:<br />

• Recorrido Preor<strong>de</strong>n (NID)<br />

- Visitar la raíz (N).<br />

- Recorrer el subárbol izquierdo (I).<br />

- Recorrer el subárbol <strong>de</strong>recho (D).<br />

• Recorrido Enor<strong>de</strong>n(IND)<br />

- Recorrer el subárbol izquierdo (I).<br />

- Visitar la raíz (N).<br />

- Recorrer el subárbol <strong>de</strong>recho (D).


Segundo bimeStre<br />

• Recorrido Postor<strong>de</strong>n (IDN)<br />

Guía didáctica: Estructura <strong>de</strong> Datos<br />

- Recorrer el subárbol izquierdo (I).<br />

- Recorrer el subárbol <strong>de</strong>recho (D).<br />

- Visitar la raíz (N).<br />

A continuación se presenta los tres recorridos mencionados anteriormente para el árbol mostrado en la<br />

figura: 3.4<br />

Preor<strong>de</strong>n: L, D, B, H, G, J, Q, X, T, S, W, Y<br />

Enor<strong>de</strong>n: B, D, G, H, J, L, Q, S, T, W, X, Y<br />

Postor<strong>de</strong>n: B, G, J, H, D, S, W, T, Y, X, Q, L<br />

Figura 3.4 Árbol Binario.<br />

Una vez que po<strong>de</strong>mos i<strong>de</strong>ntificar, representar y recorrer un árbol binario, procedamos a revisar algunas<br />

operaciones que se pue<strong>de</strong>n llevar a cabo en árboles.<br />

3.6. Árboles binarios <strong>de</strong> búsqueda.<br />

Recuer<strong>de</strong>, los árboles binarios <strong>de</strong> búsqueda son muy utilizados, y son la base para nuevas<br />

estructuras como los Árboles binarios equilibrados (AVL), la principal característica es su<br />

facilidad en cuanto a los algoritmos para trabajar con la información almacenada.<br />

Gracias a las características <strong>de</strong> los árboles binarios se pue<strong>de</strong> exten<strong>de</strong>r su funcionalidad; a continuación<br />

revisaremos el árbol binario <strong>de</strong> búsqueda el mismo que consiste en una estructura sobre la cual se pue<strong>de</strong><br />

realizar eficientemente las operaciones <strong>de</strong> búsqueda, inserción y eliminación.<br />

Formalmente se <strong>de</strong>fine un árbol binario <strong>de</strong> búsqueda <strong>de</strong> la siguiente manera:<br />

“Para todo nodo T <strong>de</strong>l árbol <strong>de</strong>be cumplirse que todos los valores <strong>de</strong> los nodos <strong>de</strong>l subárbol izquierdo <strong>de</strong><br />

T <strong>de</strong>ben ser menores o iguales al valor <strong>de</strong>l nodo T.” De forma similar, todos los valores <strong>de</strong> los nodos <strong>de</strong>l<br />

subárbol <strong>de</strong>recho <strong>de</strong> T <strong>de</strong>ben ser mayores o iguales al valor <strong>de</strong>l nodo T.<br />

Un árbol binario <strong>de</strong> búsqueda se construye en base a una lista <strong>de</strong> números dados (claves), en el cual el<br />

primer número <strong>de</strong> dicha lista será la raíz <strong>de</strong>l árbol, y los siguientes valores se ubican <strong>de</strong> acuerdo al criterio<br />

antes indicado.<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong> 43


Guía didáctica: Estructura <strong>de</strong> Datos<br />

44<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong><br />

Segundo bimeStre<br />

A continuación vamos a crear un árbol binario <strong>de</strong> búsqueda para la siguiente lista <strong>de</strong> números: 65, 75,<br />

30, 4, 41, 85.<br />

65<br />

30 75<br />

4 41 85<br />

Figura 3.5 Árbol Binario.<br />

Hemos concluido el estudio <strong>de</strong> esta unidad, como se podrá dar cuenta este tipo <strong>de</strong> estructuras son muy<br />

importantes, <strong>de</strong>bido a sus características particulares, principalmente la organización jerárquica. Para<br />

evaluar el avance que va adquiriendo sírvase respon<strong>de</strong>r la siguiente autoevaluación.<br />

Autoevaluación 3<br />

1. Escriba una V si consi<strong>de</strong>ra que la afirmación es VERDADERA o una F si la consi<strong>de</strong>ra FALSA.<br />

1 Los punteros hacen un uso más eficiente <strong>de</strong> la memoria. ( )<br />

2 Un árbol consta <strong>de</strong> un conjunto finito <strong>de</strong> elementos llamados nodos. ( )<br />

3 El nivel <strong>de</strong> un nodo es la longitud <strong>de</strong>l camino que lo conecta al nodo raíz. ( )<br />

4 Un árbol binario pue<strong>de</strong> tener más <strong>de</strong> dos subárboles. ( )<br />

5 El recorrido <strong>de</strong> un árbol supone visitar cada nodo sólo una vez. ( )<br />

6<br />

El recorrido postor<strong>de</strong>n procesa primero el subárbol izquierdo, <strong>de</strong>spués la raíz y a<br />

continuación el subárbol <strong>de</strong>recho.<br />

( )<br />

7<br />

Al trabajar con punteros: ¿Se pue<strong>de</strong> <strong>de</strong>clarar variables puntero que apunten a<br />

cualquier tipo <strong>de</strong> dato, incluso a otros punteros?.<br />

( )<br />

8 El operador & <strong>de</strong>vuelve la dirección <strong>de</strong> la variable a la cual se aplica. ( )<br />

9 Los árboles sirven para organizar a<strong>de</strong>cuadamente la información. ( )<br />

10<br />

Todo nodo que no es raíz, ni terminal u hoja se conoce con el nombre <strong>de</strong><br />

interior.<br />

( )<br />

RESUELVA LA SIGUIENTE PARTE PRÁCTICA<br />

2. Dado el siguiente árbol.<br />

Indique lo siguiente:<br />

Padres:<br />

Hijos<br />

Hojas<br />

Hermanos<br />

Profundidad


Segundo bimeStre<br />

Guía didáctica: Estructura <strong>de</strong> Datos<br />

3. Construir un árbol binario <strong>de</strong> búsqueda con los siguientes datos: 50, 25, 75, 10, 40, 60, 90,<br />

35, 45, 70, 42.<br />

4. Del árbol binario <strong>de</strong> búsqueda <strong>de</strong>l ejercicio anterior, realice lo siguiente:<br />

Recorrido Preor<strong>de</strong>n:<br />

Recorrido Enor<strong>de</strong>n:<br />

Recorrido Postor<strong>de</strong>n:<br />

Ir a solucionario<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong> 45


Guía didáctica: Estructura <strong>de</strong> Datos<br />

46<br />

Unidad 4: ARCHIVOS<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong><br />

Segundo bimeStre<br />

Hasta ahora hemos estudiado las estructuras <strong>de</strong> datos tanto estáticas (arreglos) como dinámicas (Listas,<br />

árboles) las cuales son <strong>de</strong> mucha utilidad en el <strong>de</strong>sarrollo <strong>de</strong> aplicaciones; pero por otra parte pensemos<br />

que las aplicaciones procesan y posteriormente guardan y/o recuperan información, para lo cual se<br />

<strong>de</strong>be utilizar otras técnicas <strong>de</strong> almacenamiento permanente como son los archivos.<br />

Para la presente unidad es necesario revisar el capítulo 15 Entradas y salidas por archivos, <strong>de</strong>l texto base<br />

Tal como lo he comentado anteriormente, para la buena comprensión <strong>de</strong> los diferentes temas es<br />

importante en primera instancia tener claro que los aspectos técnicos <strong>de</strong> las diferentes estructuras<br />

tienen como base el comportamiento real <strong>de</strong> ciertos objetos <strong>de</strong> nuestro entorno, en función <strong>de</strong> esto<br />

revisemos a continuación las formas <strong>de</strong> acceso a un archivo.<br />

4.1. Formas <strong>de</strong> acceso.<br />

El acceso a la información en un archivo se lo pue<strong>de</strong> realizar <strong>de</strong> 2 maneras:<br />

• Acceso Secuencial.<br />

Recor<strong>de</strong>mos como se hacía para acce<strong>de</strong>r a un tema musical en los clásicos casettes <strong>de</strong> audio, se tenía que<br />

a<strong>de</strong>lantar o retroce<strong>de</strong>r la cinta hasta encontrar el tema en cuestión, a este lo llamamos acceso secuencial<br />

puesto que implica recorrer todos los temas anteriores o posteriores <strong>de</strong> forma similar, cuando el acceso<br />

a la información (registros) <strong>de</strong> un archivo es secuencial es necesario recorrer o visitar todos los registros<br />

prece<strong>de</strong>ntes.<br />

• Acceso Directo.<br />

De la misma forma pensemos como se acce<strong>de</strong> a un tema musical en un clásico disco <strong>de</strong> acetato o inclusive<br />

un CD <strong>de</strong> música actual, pues es muy simple se acce<strong>de</strong> directamente al tema requerido, apliquemos el<br />

mismo criterio para leer los registros <strong>de</strong> un archivo <strong>de</strong> acceso secuencial.<br />

Tal como se comentó anteriormente las aplicaciones o sistemas informáticos, <strong>de</strong>s<strong>de</strong> el más pequeño<br />

hasta la más gran<strong>de</strong> base <strong>de</strong> datos necesita guardar la información en dispositivos externos <strong>de</strong><br />

almacenamiento permanente, tales como: CD, DVD, Flash Memory, Disco Duro, etc. la información se<br />

almacena en archivos (ficheros), cuyos datos están almacenados <strong>de</strong> tal forma que facilite el acceso a los<br />

mismos y adicionalmente se realicen las acciones normales como son: leer, escribir, modificar y eliminar<br />

información.<br />

En forma general un archivo es una forma o medio que disponen los sistemas operativos para guardar<br />

información en una sola unidad lógica <strong>de</strong> almacenamiento.<br />

Finalizado el presente apartado se plantean ejercicios que permiten afianzar los conocimientos, por<br />

lo que <strong>de</strong>berá realizar el respectivo análisis y <strong>de</strong>sarrollo basándose en los contenidos anteriormente<br />

tratados.


Segundo bimeStre<br />

Ejercicio 4.1<br />

Guía didáctica: Estructura <strong>de</strong> Datos<br />

Describa al menos 5 aplicaciones en las cuales se pueda utilizar Archivos para almacenar información:<br />

……………………………………………………………………………………………………….<br />

……………………………………………………………………………………………………….<br />

……………………………………………………………………………………………………….<br />

……………………………………………………………………………………………………….<br />

……………………………………………………………………………………………………….<br />

……………………………………………………………………………………………………….<br />

Revisemos a continuación los aspectos teóricos relacionados con el movimiento o flujo <strong>de</strong> información<br />

<strong>de</strong>s<strong>de</strong> y hacia los archivos.<br />

4.2. Flujos.<br />

El procesamiento <strong>de</strong> archivo en lenguaje C se lo hace mediante el concepto <strong>de</strong> Flujo el cual es un<br />

concepto que se refiere al movimiento o corriente <strong>de</strong> información <strong>de</strong>s<strong>de</strong> un origen hasta un <strong>de</strong>stino, en<br />

nuestro caso <strong>de</strong>s<strong>de</strong> la aplicación hasta un fichero, pero este concepto se lo utiliza en otros ámbitos <strong>de</strong><br />

las aplicaciones en C, por ejemplo cuando <strong>de</strong>sarrollamos un programa, automáticamente se crean dos<br />

flujos: el primero que se refiere al envío <strong>de</strong> información <strong>de</strong>s<strong>de</strong> la aplicación hasta la pantalla (stdout para<br />

presentar datos) y un segundo flujo para enviar datos <strong>de</strong>s<strong>de</strong> el teclado hasta la aplicación (stdin).<br />

Cuando empezamos a <strong>de</strong>sarrollar aplicaciones en una nueva estructura, es necesario tener en cuenta<br />

lo siguiente: en primer lugar se <strong>de</strong>be enten<strong>de</strong>r todos los conceptos o parte teórica <strong>de</strong> la misma, pero<br />

adicional a ello es necesario saber que nunca se empieza a trabajar <strong>de</strong>s<strong>de</strong> cero o <strong>de</strong>s<strong>de</strong> lo más básico; los<br />

lenguajes <strong>de</strong> programación ya tienen <strong>de</strong>finidos ciertos tipos <strong>de</strong> datos o estructuras que nos servirán <strong>de</strong><br />

base para nuestro <strong>de</strong>sarrollo, en este caso el lenguaje C ya tiene <strong>de</strong>finido el tipo <strong>de</strong> dato FILE el mismo<br />

que lo estudiaremos a continuación.<br />

Es necesario revisar el apartado 15.1. Flujos, <strong>de</strong>l texto base, en el que se especifican la<br />

forma en que el lenguaje C estructura los flujos<br />

Pue<strong>de</strong> utilizar algún otro recurso que ayu<strong>de</strong> a afianzar los conocimientos.<br />

4.3. Tipo <strong>de</strong> datos FILE.<br />

Si bien es cierto a nivel <strong>de</strong> sistema operativo cada archivo tiene su propio nombre, por ejemplo: “leeme.<br />

txt”, “datos.txt”, ”info.dat”, etc. pero a nivel <strong>de</strong> lenguaje C la forma <strong>de</strong> acce<strong>de</strong>r a un fichero <strong>de</strong>be ser mas<br />

técnica, en este caso utilizaremos un puntero o en otras palabras la dirección en la cual se encuentra<br />

ubicado el archivo que vamos a procesar, adicionalmente veamos que para almacenar la información<br />

técnica <strong>de</strong>l archivo que estamos procesando es necesario disponer <strong>de</strong> una estructura (FILE) en cuyos<br />

campos se almacenen las características <strong>de</strong>l fichero, pues esta estructura FILE ya está <strong>de</strong>finida y por lo<br />

tanto para referirnos a un fichero <strong>de</strong>s<strong>de</strong> una aplicación C <strong>de</strong>bemos <strong>de</strong>clarar un puntero a esta estructura,<br />

se pue<strong>de</strong> utilizar la siguiente nomenclatura:<br />

FILE *F;<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong> 47


Guía didáctica: Estructura <strong>de</strong> Datos<br />

48<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong><br />

Segundo bimeStre<br />

Como nos po<strong>de</strong>mos dar cuenta, la variable “f” es la referencia al fichero que utilizaremos en nuestra<br />

aplicación, y la misma es un puntero a la estructura antes mencionada.<br />

Es necesario revisar el apartado 15.2. Puntero FILE, <strong>de</strong>l texto base, en el que se<br />

la <strong>de</strong>finición <strong>de</strong> archivo FILE a partir <strong>de</strong> una estructura <strong>de</strong> datos.<br />

A continuación revisemos las tareas típicas <strong>de</strong> procesamiento que se realiza sobre un archivo las que<br />

<strong>de</strong>stacan: abrir, leer datos, escribir y cerrar el archivo.<br />

4.4. Abrir un archivo.<br />

El proceso <strong>de</strong> apertura <strong>de</strong> un archivo es muy simple, únicamente se hace un llamado a la función<br />

correspondiente y esta <strong>de</strong>vuelve la referencia <strong>de</strong>l archivo abierto:<br />

f = fopen(ruta_y_nombre_<strong>de</strong>l_archivo, modo);<br />

Es necesario revisar el apartado 15.3. Apertura <strong>de</strong> una archivo, <strong>de</strong>l texto base, en el<br />

que se especifica la sintaxis y ejemplos a la hora <strong>de</strong> abrir un archivo<br />

Si el archivo se encuentra en una subcarpeta, recuer<strong>de</strong> que <strong>de</strong>be utilizar “\\” en vez <strong>de</strong> “\” para especificar<br />

dicha ruta, mientras que en el parámetro modo <strong>de</strong>be indicar precisamente el modo en que será abierto<br />

el archivo (en la sección 15.3.1 <strong>de</strong>l texto básico se encuentran especificados estos parámetros). Esta<br />

función pue<strong>de</strong> retornar un valor NULL si existió un error al intentar abrir el archivo.<br />

Es importante aclarar que en la presente asignatura pondremos especial interés con en los archivos<br />

cuyo modo <strong>de</strong> apertura es <strong>de</strong> tipo “texto”.<br />

4.5. Escribir datos.<br />

Si al momento <strong>de</strong> abrir el archivo en el parámetro modo especificamos el modo <strong>de</strong> escritura “w” y la<br />

apertura y/o creación fue correcta, ya po<strong>de</strong>mos ejecutar los procesos correspondientes<br />

putc(c, f);<br />

fputc(c, f);<br />

En estas funciones a más <strong>de</strong> requerir la referencia <strong>de</strong>l archivo en el cual escribirán los datos, también se<br />

<strong>de</strong>be especificar el dato que será escrito.<br />

A continuación apliquemos los conceptos estudiados, empecemos con la codificación <strong>de</strong> un pequeño<br />

programa para escribir o grabar datos en el archivo, recuer<strong>de</strong> que si necesita ayuda pue<strong>de</strong> contactar con<br />

sus tutores, suerte.<br />

Ejercicio 4.2<br />

Desarrolle un programa que registre una lista <strong>de</strong> 20 números en un archivo <strong>de</strong> tipo texto:


Segundo bimeStre<br />

Guía didáctica: Estructura <strong>de</strong> Datos<br />

Una vez <strong>de</strong>sarrollado este ejercicio <strong>de</strong> escritura <strong>de</strong> datos vamos a continuar con el proceso inverso, es<br />

<strong>de</strong>cir leer datos; le invito a revisar el siguiente tema.<br />

4.6. Leer datos.<br />

Una vez que el archivo ha sido abierto <strong>de</strong> forma exitosa se proce<strong>de</strong> a leer la información almacenada en<br />

el mismo, para lo cual normalmente se utiliza un ciclo while para recorrer y extraer los datos almacenados<br />

en el fichero, este proceso repetitivo finaliza cuando la función <strong>de</strong> lectura <strong>de</strong> datos encuentra el indicador<br />

<strong>de</strong> fin <strong>de</strong> archivo (EOF). Estas funciones <strong>de</strong> lectura <strong>de</strong> datos se encuentran especificadas en la sección<br />

15.4 <strong>de</strong>l texto básico:<br />

c = getc(f);<br />

c = fgetc(f);<br />

Como es <strong>de</strong> imaginar estas funciones requieren como parámetro la referencia <strong>de</strong>l fichero que será leído,<br />

y obviamente que haya sido previamente abierto.<br />

Finalizado el presente apartado se plantea el siguiente ejercicio que permiten afianzar los conocimientos,<br />

por lo que <strong>de</strong>berá realizar el respectivo análisis y <strong>de</strong>sarrollo basándose en los contenidos anteriormente<br />

tratados.<br />

Ejercicio 4.3<br />

Desarrolle un programa que lea los datos registrados en el ejercicio 4.2.<br />

4.7. Cerrar el archivo.<br />

Luego <strong>de</strong> efectuar las actualizaciones en el archivo, ya sean lectura o escritura <strong>de</strong> datos se <strong>de</strong>be ejecutar<br />

el cierre <strong>de</strong>l archivo; por otra parte veamos que si bien es cierto cuando termina la ejecución <strong>de</strong>l<br />

programa el archivo se cierra automáticamente, es necesario cerrar explícitamente el fichero para evitar<br />

posibles inconsistencias en la información guardada, pues al cerrar el archivo se obliga a guardar datos<br />

que posiblemente no estén aun registrados y se encuentren en buffer <strong>de</strong> memoria intermedio.<br />

fclose(f);<br />

Tal como lo comente anteriormente el proceso <strong>de</strong> cierre es muy simple y como se podrá dar cuenta<br />

únicamente recibe como parámetro la variable <strong>de</strong> tipo FILE correspondiente al archivo que se <strong>de</strong>sea<br />

cerrar.<br />

Es hora <strong>de</strong> verificar el avance relacionado con archivos, para lo cual lo invitamos a trabajar en la siguiente<br />

autoevaluación.<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong> 49


Guía didáctica: Estructura <strong>de</strong> Datos<br />

50<br />

Autoevaluación 4<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong><br />

Segundo bimeStre<br />

1. Escriba una V si consi<strong>de</strong>ra que la afirmación es VERDADERA o una F si la consi<strong>de</strong>ra FALSA.<br />

1<br />

La estructura FILE contiene información sobre el archivo tal como la dirección<br />

<strong>de</strong>l Buffer que utiliza.<br />

2 El acceso a los archivos se hace con un Buffer intermedio (en lenguaje C). ( )<br />

3 Un stream se refiere al flujo <strong>de</strong> datos entre una fuente y un <strong>de</strong>stino. ( )<br />

4<br />

La apertura <strong>de</strong>l archivo se refiere a conectar el archivo externo con el<br />

programa.<br />

5 Al momento <strong>de</strong> abrir el archivo se <strong>de</strong>be especificar el modo <strong>de</strong> apertura. ( )<br />

6 La estructura FILE está <strong>de</strong>clarada en la librería stdio.h. ( )<br />

7<br />

8<br />

9<br />

10<br />

El cierre <strong>de</strong> un archivo <strong>de</strong>be realizarse con la finalidad <strong>de</strong> evitar que el archivo<br />

que <strong>de</strong> incompleto.<br />

Los archivos se guardan en dispositivos externos tal como flash memory, cd,<br />

dvd, etc.<br />

La apertura <strong>de</strong> un archivo <strong>de</strong>be realizarse <strong>de</strong> la siguiente manera:<br />

FILE *pf;<br />

pf = fopen(nombre_archivo, modo, FILE)<br />

Al abrir el archivo <strong>de</strong>be especificarse si este será tratado <strong>de</strong> forma binaria o<br />

como ca<strong>de</strong>na <strong>de</strong> caracteres.<br />

2. Realice un programa en C para crear en disco un archivo <strong>de</strong> texto.<br />

3. Realice un programa en C para leer un archivo <strong>de</strong> texto <strong>de</strong>s<strong>de</strong> el disco.<br />

Ir a solucionario<br />

( )<br />

( )<br />

( )<br />

( )<br />

( )<br />

( )


Segundo bimeStre<br />

Unidad 5: GRAFOS<br />

Recursos educativos multimedia<br />

Guía didáctica: Estructura <strong>de</strong> Datos<br />

En el área <strong>de</strong> la informática existen muchos conceptos que si bien es cierto se <strong>de</strong>finen mediante<br />

herramientas o estructuras <strong>de</strong> datos permiten mo<strong>de</strong>lar implícitamente conceptos computacionales en<br />

nuestra mente cada día, un caso particular <strong>de</strong> esto son los Grafos, pensemos que cuando queremos<br />

movilizarnos <strong>de</strong> una ciudad a otra en nuestro vehículo, normalmente empezamos trazando una ruta<br />

o <strong>de</strong>finimos algunas ciuda<strong>de</strong>s por las cuales pasaremos o también seleccionamos <strong>de</strong> entre varias<br />

alternativas la mejor ruta; por otra parte pensemos también en las compañías aéreas internacionales<br />

normalmente hacen sus itinerarios teniendo en cuenta algunas ciuda<strong>de</strong>s en las cuales se hará escala;<br />

visto <strong>de</strong>s<strong>de</strong> el punto <strong>de</strong> vista informático lo que estamos trazando es un grafo y tal como lo hemos visto<br />

tiene una gran cantidad <strong>de</strong> aplicaciones en áreas como: geografía, ingenierías, en el campo industrial,<br />

sistemas <strong>de</strong> información geográfica, en las compañías <strong>de</strong> distribución <strong>de</strong> productos, etc.<br />

Consecuentemente en el contexto informático esta estructura tiene un amplio rango <strong>de</strong> aplicaciones,<br />

así por ejemplo en el mo<strong>de</strong>lado <strong>de</strong> cambio estados <strong>de</strong> un sistema, etc, es por ello que le proponemos el<br />

siguiente ejercicio que tiene relación con los grafos y sus aplicaciones.<br />

Varios autores realizan la siguiente <strong>de</strong>finición: “Un grafo, G, es un par, compuesto por dos conjuntos<br />

V y A. Al conjunto V se le llama conjunto <strong>de</strong> vértices o nodos <strong>de</strong>l grafo. A es un conjunto <strong>de</strong> pares <strong>de</strong><br />

vértices, estos pares se conocen habitualmente con el nombre <strong>de</strong> arcos o ejes <strong>de</strong>l grafo”. Se suele utilizar<br />

la notación G = (V, A) para i<strong>de</strong>ntificar un grafo.<br />

Desarrolle el ejercicio que a continuación se indica, esto le permitirá afianzar sus conocimientos en los<br />

temas tratados.<br />

Ejercicio 5.1<br />

Describa 5 ejemplos en los cuales se pue<strong>de</strong> utilizar los grafos como estructuras <strong>de</strong> datos:<br />

………………………………………………..………….…………………………………………….<br />

…………………………………………………..……….…………………………………………….<br />

……………………………………………………..…….…………………………………………….<br />

………………………………………………………...……………………………………………….<br />

…………………………………………………………...…………………………………………….<br />

Tal como le hemos hecho en las unida<strong>de</strong>s anteriores empecemos revisando los fundamentos teóricos<br />

<strong>de</strong> esta estructura, y al igual que todos los temas antes estudiados, la terminología es importante para la<br />

comprensión <strong>de</strong>l tipo <strong>de</strong> datos propiamente dicho.<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong> 51


Guía didáctica: Estructura <strong>de</strong> Datos<br />

5.1. Componentes <strong>de</strong> un grafo.<br />

52<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong><br />

Segundo bimeStre<br />

Des<strong>de</strong> el punto <strong>de</strong> vista más formal, un grafo está constituido básicamente por dos elementos:<br />

• Vértices o nodos, los cuales son los puntos o aristas que conforman el grafo.<br />

• Arcos o líneas que unen los vértices.<br />

Adicionalmente a los componentes existen otros términos más específicos es <strong>de</strong>cir en algunos casos son<br />

conceptos que se aplican a <strong>de</strong>terminados grafos <strong>de</strong>pendiendo <strong>de</strong> su naturaleza o contenido y tipo <strong>de</strong><br />

información que proporcionan. Los grafos pue<strong>de</strong>n ser dirigidos o no dirigidos, tal como se indica en la<br />

figura 5,1 y 5.2.<br />

Figura 5.1: Grafo no dirigido Figura 5.2: Grafo dirigido<br />

Finalizado el presente apartado se plantea un ejercicio que permiten afianzar los conocimientos, por<br />

lo que <strong>de</strong>berá realizar el respectivo análisis y <strong>de</strong>sarrollo basándose en los contenidos anteriormente<br />

tratados.<br />

Ejercicio 5.2<br />

Dado el siguiente conjunto <strong>de</strong> Vértices y aristas, represente gráficamente los respectivos grafos<br />

(i<strong>de</strong>ntifique si es un grafo dirigido o no dirigido:<br />

G1 = (V1, A1)<br />

V1 = {1, 2, 3, 4} A1 = {(1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)}<br />

G2 = (V2, A2)<br />

V2 = {1, 2, 3, 4, 5, 6} A2 = {(1, 2), (1, 3), (2, 4), (2, 5), (3, 6)}<br />

G3 = (V3, A3)<br />

V3 = {1, 2, 3} A3 = {, , }<br />

La representación gráfica <strong>de</strong> éstas tres estructuras es la siguiente:


Segundo bimeStre<br />

5.2. Definiciones.<br />

Guía didáctica: Estructura <strong>de</strong> Datos<br />

A continuación revisemos las <strong>de</strong>finiciones <strong>de</strong> los términos relacionados con los Grafos:<br />

• Grafo no dirigido: Gráficamente este tipo <strong>de</strong> grafo no tiene dirección o no tiene flechas, <strong>de</strong> manera<br />

formal podríamos <strong>de</strong>cir que el arco que une los dos nodos se pue<strong>de</strong> representar <strong>de</strong> dos formas<br />

(n1, n2) o (n2, n1), ver Figura 5.1.<br />

• Grafo dirigido. El ejemplo <strong>de</strong> la figura 5.2 es un Grafo dirigido, puesto que las flechas indican la<br />

relación existente entre los dos nodos y por otra parte al arco (E, D) no se lo pue<strong>de</strong> representar <strong>de</strong><br />

la forma (D, E).<br />

• Grafo valorado. En este caso cada uno <strong>de</strong> los arcos tiene un peso o valor.<br />

• Grado. Es el número <strong>de</strong> arcos que contiene el nodo.<br />

• Grado <strong>de</strong> entrada. En un Grafo dirigido es el número <strong>de</strong> arcos que llegan al nodo.<br />

• Grado <strong>de</strong> salida. Es el número <strong>de</strong> arcos que salen <strong>de</strong>l nodo.<br />

• Camino: Es la secuencia <strong>de</strong> vértices necesarios para alcanzar un nodo <strong>de</strong> <strong>de</strong>stino.<br />

• Longitud <strong>de</strong> un camino: Es la cantidad <strong>de</strong> nodos incluidos en un camino, incluyendo el primero y<br />

el último nodo.<br />

La mejor manera <strong>de</strong> enten<strong>de</strong>r los conceptos <strong>de</strong> un grafo es aplicarlos en un mo<strong>de</strong>lo especifico, para lo<br />

cual sírvase <strong>de</strong>sarrollar el siguiente ejercicio.<br />

Ejercicio 5.2<br />

Elabore un Grafo a partir <strong>de</strong> las <strong>de</strong>finiciones que se realizan a continuación.<br />

1) G1={V1, A1} V1={1, 2, 3, 4, 5} G1={,,,,,,}<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong> 53


Guía didáctica: Estructura <strong>de</strong> Datos<br />

2) G2={V2, A2} V2={a, b, c, d, e, f, g}<br />

G2={(a, b), (a, c), (a, d), (a, e), (b, d), (b, e), (c, f), (c, g), (d, e), (f, g)}<br />

54<br />

Ejercicio 5.3<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong><br />

Segundo bimeStre<br />

Revisar los conceptos mencionados en la unidad 5.2 e i<strong>de</strong>ntificar la representación formal o matemática<br />

<strong>de</strong> los mismos.<br />

Una vez que hemos estudiado la parte relacionada con los conceptos, veamos cómo se almacena<br />

la información <strong>de</strong> esta estructura (la misma que es un poco irregular) para ser utilizadas en nuestras<br />

aplicaciones, veremos que se usan estructuras <strong>de</strong> datos ya conocidas por nosotros como lo son: arreglos<br />

y listas enlazadas.<br />

5.3. Representación.<br />

Obviamente para trabajar con la estructura Grafo en un sistema computacional este <strong>de</strong>be ser<br />

representado utilizando estructuras propias <strong>de</strong> los lenguajes <strong>de</strong> programación, en base a esto veremos<br />

que existen dos formas <strong>de</strong> representar esta estructura:


Segundo bimeStre<br />

Matriz <strong>de</strong> adyacencia:<br />

Figura 5.3: Grafo<br />

Guía didáctica: Estructura <strong>de</strong> Datos<br />

En este caso se utiliza una matriz cuadrada para representar el Grafo, en la cual tanto las filas y columnas<br />

representan los nodos <strong>de</strong>l Grafo y cuando existe una relación entre dos nodos se coloca un “1”, la siguiente<br />

es la matriz <strong>de</strong> adyacencia para el Grafo <strong>de</strong> la Figura 5.3:<br />

A B C D E<br />

↓ ↓ ↓ ↓ ↓<br />

0 1 1 0 0 ←A<br />

1 0 0 0 0 ←B<br />

A = 0 0 0 0 0 ←C<br />

0 1 1 0 0 ←D<br />

1 0 0 0 0 ←E<br />

Figura 5.4: Matriz <strong>de</strong> adyacencia<br />

Como hemos visto, representar un Grafo mediante la Matriz <strong>de</strong> adyacencia, utiliza la estructura <strong>de</strong> tipo<br />

matriz la misma que ya la estudiamos en el primer bimestre, apliquemos estos conocimientos en el<br />

siguiente ejercicio.<br />

Ejercicio 5.4<br />

Desarrolle un programa que construya la matriz <strong>de</strong> adyacencia <strong>de</strong> un Grafo; los datos <strong>de</strong>ben ser<br />

ingresados <strong>de</strong>s<strong>de</strong> el teclado.<br />

Listas <strong>de</strong> adyacencia:<br />

Se utilizan Listas enlazadas para representar el grafo, para lo cual se crea una “Lista <strong>de</strong> Directorio” misma<br />

que es una lista <strong>de</strong> todos los nodos <strong>de</strong>l grafo y para representar la relación con los otros nodos se crean<br />

nuevos enlaces <strong>de</strong>s<strong>de</strong> cada nodo <strong>de</strong> la “Lista <strong>de</strong> Directorio” antes mencionada, igualmente en la siguiente<br />

figura se muestra la “Lista <strong>de</strong> adyacencia” para el Grafo <strong>de</strong> la Figura 5.3.<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong> 55


Guía didáctica: Estructura <strong>de</strong> Datos<br />

56<br />

Figura 5.5 Listas <strong>de</strong> adyacencia utilizando listas enlazadas<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong><br />

Segundo bimeStre<br />

De la misma forma la representación mediante listas <strong>de</strong> adyacencia utiliza listas enlazadas, como ejercicio<br />

final al estudio <strong>de</strong> esta estructura sírvase realizar el programa correspondiente para el Grafo anterior y<br />

utilizando esta última forma <strong>de</strong> representación.<br />

Muy bien estimados estudiantes hemos llegado a la finalización <strong>de</strong>l estudio <strong>de</strong> la asignatura en este<br />

segundo bimestre y por en<strong>de</strong> <strong>de</strong>l presente ciclo, esperamos que los conocimiento adquiridos sean los<br />

básicos y necesarios para iniciar en el <strong>de</strong>sarrollo <strong>de</strong> aplicaciones pequeñas pero que tengan eficiencia y<br />

eficacia, es por ello que le invitamos a <strong>de</strong>sarrollar la última autoevaluación esperando todo le salga <strong>de</strong><br />

lo mejor. A<strong>de</strong>lante y éxitos!.<br />

Autoevaluación 5<br />

1. Escriba una V si consi<strong>de</strong>ra que la afirmación es VERDADERA o una F si la consi<strong>de</strong>ra FALSA.<br />

1 Se conoce como arco a la línea que une dos nodos <strong>de</strong> un Grafo. ( )<br />

2 Un Grafo dirigido es aquel cuyas líneas tienen una flecha es <strong>de</strong>cir una dirección. ( )<br />

3<br />

La Matriz <strong>de</strong> adyacencia se utiliza para representar Grafos únicamente cuando<br />

estos son valorados.<br />

( )<br />

4<br />

Se dice que un Grafo es valorado cuando los nodos tienen un numero en lugar<br />

<strong>de</strong> tener un texto o una letra.<br />

( )<br />

5 El término “Camino” es un concepto utilizado en Grafos. ( )<br />

6<br />

La Longitud entre dos nodos <strong>de</strong> un Grafo es la suma <strong>de</strong> los valores que tienen los<br />

arcos que los une.<br />

( )<br />

7<br />

Si el Grafo es no dirigido el Grado pue<strong>de</strong> clasificarse en: Grado <strong>de</strong> entrada y<br />

Grado <strong>de</strong> salida.<br />

( )<br />

8<br />

En un Grafo no dirigido, el arco que une los nodos A y B; se pue<strong>de</strong> escribir <strong>de</strong><br />

cualquiera <strong>de</strong> estas formas (A, B) y (B, A).<br />

( )<br />

9<br />

El uso <strong>de</strong> listas <strong>de</strong> adyacencia para representar Grafos hace mas óptimo el uso <strong>de</strong><br />

memoria.<br />

( )<br />

10 Se pue<strong>de</strong> utilizar Grafos en Ingeniería Eléctrica. ( )


Segundo bimeStre<br />

Guía didáctica: Estructura <strong>de</strong> Datos<br />

2. Realizar un Grafo a partir <strong>de</strong> las <strong>de</strong>finiciones que se realizan a continuación<br />

• G1={V1, A1} V1={a, b, c, d, e, f, g}<br />

G1={,,,,,,, ,<br />

, }<br />

• G2={V2, A2} V2={a, b, c, d, e, f, g, h}<br />

G2={(a, b), (a, c), (b, d), (c, d), (d, e), (d, f), (e, f), (e, g), (g, f), (f, h), (g, h)}<br />

Ir a solucionario<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong> 57


Guía didáctica: Estructura <strong>de</strong> Datos<br />

58<br />

8. Solucionario<br />

8.1. Autoevaluación 1<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong><br />

Solucionario<br />

1. Escriba una V si consi<strong>de</strong>ra que la afirmación es VERDADERA o una F si la consi<strong>de</strong>ra FALSA.<br />

1 F<br />

2 V<br />

3 F<br />

4 F<br />

5 V<br />

6 F<br />

7 V<br />

8 V<br />

9 V<br />

10 V<br />

Parte A:<br />

2. Declare un arreglo <strong>de</strong> or<strong>de</strong>n “m x n”, pue<strong>de</strong> ser tres filas y tres columnas. Se <strong>de</strong>sea registrar<br />

la siguiente matriz:<br />

5 6 9<br />

10 1 7<br />

3 5 2<br />

int datos[3][3];<br />

El arreglo <strong>de</strong>finido es <strong>de</strong> tipo entero y consta <strong>de</strong> 3 filas y 3 columnas y su i<strong>de</strong>ntificador es “datos”.<br />

Estrategia:<br />

Pue<strong>de</strong> consultar el apartado 1.5 <strong>de</strong> la guía didáctica.<br />

3. Escriba el código para presentar los elementos <strong>de</strong> la matriz creada en el punto 1.<br />

for (i=0; i


Estrategia:<br />

Solucionario<br />

Guía didáctica: Estructura <strong>de</strong> Datos<br />

Consulte el apartado 9.4.4 <strong>de</strong>l texto base especialmente el ejercicio 9.5. “datos” es la matriz, <strong>de</strong>finida en<br />

el punto 1<br />

4. Escriba el código para obtener los elementos <strong>de</strong> la diagonal principal <strong>de</strong> la matriz <strong>de</strong>clarada<br />

y páselos a un arreglo unidimensional.<br />

int diagonal[3];<br />

for (i=0; i


Guía didáctica: Estructura <strong>de</strong> Datos<br />

9. Escriba los pasos que sigue el algoritmo <strong>de</strong> selección.<br />

Su funcionamiento es el siguiente:<br />

• Buscar el mínimo elemento <strong>de</strong> la lista<br />

• Intercambiarlo con el primero<br />

• Buscar el mínimo en el resto <strong>de</strong> la lista<br />

• Intercambiarlo con el segundo<br />

Y en general:<br />

• Buscar el mínimo elemento entre una posición i y el final <strong>de</strong> la lista<br />

• Intercambiar el mínimo con el elemento <strong>de</strong> la posición i<br />

60<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong><br />

Solucionario<br />

Estrategia: Revise el apartado 10.3 <strong>de</strong>l texto base. A<strong>de</strong>más en el anexo 2 se indica la codificación <strong>de</strong> la<br />

aplicación <strong>de</strong>l algoritmo <strong>de</strong> or<strong>de</strong>nación por selección.


Solucionario<br />

8.2. Autoevaluación 2<br />

Guía didáctica: Estructura <strong>de</strong> Datos<br />

1. Escriba una V si consi<strong>de</strong>ra que la afirmación es VERDADERA o una F si la consi<strong>de</strong>ra FALSA.<br />

1 V<br />

2 V<br />

3 V<br />

4 F<br />

5 F<br />

6 V<br />

7 F<br />

8 F<br />

9 F<br />

10 V<br />

3) Cree una lista enlazada en C/C++ que permita representar la secuencia 1,2,3,….10.<br />

Estrategia: Para resolver este ejercicio es necesario revisar el apartado 18.2 <strong>de</strong>l texto base. La solución<br />

<strong>de</strong> este ejercicio está en el anexo 5 <strong>de</strong> ésta guía.<br />

4) Sobre la lista creada en el punto 1, encuentre el dato <strong>de</strong>l nodo 5.<br />

int BuscarNodo (Nodo *Siguiente, int valor){<br />

int encontrado = 0;<br />

while (siguiente != NULL){<br />

if (Siguiente->Datos == valor){<br />

encontrado = 1;<br />

Siguiente = NULL;<br />

}<br />

else<br />

Siguiente = Siguiente->Enlace;<br />

}<br />

return encontrado;<br />

}<br />

En la codificación se presenta la función que permite buscar un elemento en la lista enlazada y al<br />

momento en que se encuentra <strong>de</strong>vuelve el valor <strong>de</strong> 1, caso contrario 0.<br />

Estrategia: Para resolver este ejercicio es necesario revisar el apartado 18.3 <strong>de</strong>l texto base.<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong> 61


Guía didáctica: Estructura <strong>de</strong> Datos<br />

62<br />

8.3. Autoevaluación 3<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong><br />

Solucionario<br />

1. Escriba una V si consi<strong>de</strong>ra que la afirmación es VERDADERA o una F si la consi<strong>de</strong>ra FALSA.<br />

1 V<br />

2 V<br />

3 V<br />

4 F<br />

5 V<br />

6 F<br />

7 V<br />

8 V<br />

9 V<br />

10 V<br />

2. Dado el siguiente árbol.<br />

Indique lo siguiente:<br />

Padres: F, G, H, P, O, J<br />

Hijos: G, H, P, N, F, J, Q, A, O, V, S<br />

Hojas: Q, A, S, F, V<br />

Hermanos: {G, H}, {P, N}, {F, J}, {Q, A}<br />

Profundidad: 5<br />

Estrategia: Para resolver este ejercicio es necesario revisar el apartado 3.2 <strong>de</strong> la guía didáctica.<br />

3. Construir un árbol binario <strong>de</strong> búsqueda con los siguientes datos: 50, 25, 75, 10, 40, 60, 90,<br />

35, 45, 70, 42.<br />

Estrategia: Para resolver este ejercicio es necesario revisar el apartado 20.2 <strong>de</strong>l texto base.


Solucionario<br />

4. Del árbol binario <strong>de</strong> búsqueda <strong>de</strong>l ejercicio anterior, realice lo siguiente:<br />

Recorrido Preor<strong>de</strong>n: 50, 25, 10, 40, 42, 75, 60, 70, 90<br />

Recorrido Enor<strong>de</strong>n: 10, 25, 40, 42, 50, 60, 70, 75, 90<br />

Recorrido Postor<strong>de</strong>n: 10, 42, 40, 25, 70, 60, 90, 75, 50<br />

Guía didáctica: Estructura <strong>de</strong> Datos<br />

Estrategia: Para resolver este ejercicio es necesario revisar los recorridos que se pue<strong>de</strong>n hacer en un<br />

árbol binario, que se trata en éste capítulo <strong>de</strong> la guía como en el apartado 20.6 <strong>de</strong>l texto base.<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong> 63


Guía didáctica: Estructura <strong>de</strong> Datos<br />

64<br />

8.4. Autoevaluación 4<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong><br />

Solucionario<br />

3. Escriba una V si consi<strong>de</strong>ra que la afirmación es VERDADERA o una F si la consi<strong>de</strong>ra FALSA.<br />

1 V<br />

2 V<br />

3 V<br />

4 V<br />

5 V<br />

6 V<br />

7 V<br />

8 V<br />

9 F<br />

10 V<br />

4. Realice un programa en C para crear en disco un archivo <strong>de</strong> texto.<br />

#inclu<strong>de</strong> <br />

#inclu<strong>de</strong> <br />

int main () {<br />

int c;<br />

FILE *pf;<br />

char *salida = “salida.txt“;<br />

if ((pf = fopen(salida, “wt“) == NULL){<br />

puts(“Error “);<br />

return 1;<br />

}<br />

while ((c = getchar())!=EOF){<br />

putc(c, pf);<br />

}<br />

fclose(pf);<br />

return 0;<br />

}<br />

Este programa permite cada vez que se ejecuta crear el archivo “salida.txt” con datos ingresados <strong>de</strong>s<strong>de</strong><br />

teclado. Cuando ingrese los caracteres <strong>de</strong>s<strong>de</strong> teclado para finalizar <strong>de</strong>berá presionar Crtl+Z luego enter.<br />

5. Realice un programa en C para leer un archivo <strong>de</strong> texto <strong>de</strong>s<strong>de</strong> el disco.<br />

#inclu<strong>de</strong> <br />

#inclu<strong>de</strong> <br />

int main () {<br />

int c;<br />

FILE *pf;<br />

char *salida = “salida.txt“;<br />

if ((pf = fopen(salida, “rt“) == NULL){<br />

puts(“Error “);<br />

return 1;<br />

}<br />

while ((c = getc(pf))!=EOF){


Solucionario<br />

Guía didáctica: Estructura <strong>de</strong> Datos<br />

putchar(c);<br />

}<br />

fclose(pf);<br />

getch();<br />

return 0;<br />

}<br />

El programa permite leer el archivo “salida.txt” que se encuentra en el disco y presentarlo en consola.<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong> 65


Guía didáctica: Estructura <strong>de</strong> Datos<br />

66<br />

8.5. Autoevaluación 5<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong><br />

Solucionario<br />

1. Escriba una V si consi<strong>de</strong>ra que la afirmación es VERDADERA o una F si la consi<strong>de</strong>ra FALSA.<br />

1 V<br />

2 V<br />

3 F<br />

4 F<br />

5 V<br />

6 V<br />

7 F<br />

8 V<br />

9 V<br />

10 V<br />

2. Realizar un Grafo a partir <strong>de</strong> las <strong>de</strong>finiciones que se realizan a continuación<br />

• G1={V1, A1} V1={a, b, c, d, e, f, g}<br />

G1={,,,,,,, , , }<br />

• G2={V2, A2} V2={a, b, c, d, e, f, g, h}<br />

G2={(a, b), (a, c), (b, d), (c, d), (d, e), (d, f), (e, f), (e, g), (g, f), (f, h), (g, h)}


Anexos<br />

9. Anexos<br />

Guía didáctica: Estructura <strong>de</strong> Datos<br />

El presente material ha sido reproducido con fines netamente didácticos, cuyo objetivo es<br />

brindar al estudiante mayores elementos <strong>de</strong> juicio para la comprensión <strong>de</strong> la materia, por<br />

lo tanto no tiene fin comercial.<br />

Anexo 1<br />

Or<strong>de</strong>na los elementos <strong>de</strong> un arreglo utilizando el método burbuja.<br />

Programa codificado en C, que permite ingresar 5 elementos <strong>de</strong>s<strong>de</strong> teclado y aplicando uno <strong>de</strong> los<br />

métodos <strong>de</strong> or<strong>de</strong>nación burbuja permite presentar la lista or<strong>de</strong>nada en forma ascen<strong>de</strong>nte. El método en<br />

el cual se aplica el algoritmo se <strong>de</strong>nomina Or<strong>de</strong>narBurbuja.<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong> 67<br />

DICTIONARY<br />

THESAURUS


Guía didáctica: Estructura <strong>de</strong> Datos<br />

68<br />

Anexo 2<br />

Or<strong>de</strong>na los elementos <strong>de</strong> un arreglo utilizando el método por selección.<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong><br />

Anexos<br />

Programa en C que permite ingresar 10 elementos <strong>de</strong>s<strong>de</strong> teclado y almacenarlos en un arreglo. El<br />

programa or<strong>de</strong>na los elementos <strong>de</strong>l arreglo utilizando el algoritmo por selección y se implementa<br />

Or<strong>de</strong>nar selección.


Anexos<br />

Anexo 3<br />

Or<strong>de</strong>na los elementos <strong>de</strong> un arreglo utilizando el método <strong>de</strong> inserción.<br />

Guía didáctica: Estructura <strong>de</strong> Datos<br />

Programa en C, que permite or<strong>de</strong>nar una lista <strong>de</strong> 10 elementos aplicando el método <strong>de</strong> inserción. El<br />

método que implementa el algoritmo es Or<strong>de</strong>n Inserción.<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong> 69


Guía didáctica: Estructura <strong>de</strong> Datos<br />

70<br />

Anexo 4<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong><br />

Anexos<br />

Programa que permite realizar una búsqueda aplicando el algoritmo <strong>de</strong> búsqueda secuencial<br />

Programa codificado en C, que permite aplicar el método <strong>de</strong> búsqueda secuencial en un arreglo <strong>de</strong> 5<br />

elementos.


Anexos<br />

Permite realizar búsqueda binaria en arreglos.<br />

Anexo 5<br />

Guía didáctica: Estructura <strong>de</strong> Datos<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong> 71


Guía didáctica: Estructura <strong>de</strong> Datos<br />

72<br />

Anexo 6<br />

Permite crear una lista enlazada, crea los nodos y le asigna valores a dichos nodos.<br />

//librerías básicas para programar en C.<br />

#inclu<strong>de</strong> <br />

#inclu<strong>de</strong> <br />

//<strong>de</strong>claración <strong>de</strong> una estructura que contiene al puntero<br />

struct Elemento {<br />

int informacion;<br />

struct Elemento* Siguiente; //<strong>de</strong>claración <strong>de</strong> puntero siguiente.<br />

};<br />

type<strong>de</strong>f struct Elemento Nodo;<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong><br />

Anexos<br />

void presentar(Nodo* cab); //<strong>de</strong>claración <strong>de</strong> método presentar que recibe como parámetro un<br />

//puntero.<br />

main() {<br />

int dato;<br />

Nodo* pCabeza; //<strong>de</strong>claración <strong>de</strong> un puntero <strong>de</strong>l tipo Nodo <strong>de</strong>clarado en la estructura<br />

Nodo* p; //<strong>de</strong>claración <strong>de</strong> un puntero <strong>de</strong>l tipo Nodo <strong>de</strong>clarado en la estructura<br />

Nodo* aux; //<strong>de</strong>claración <strong>de</strong> un puntero <strong>de</strong>l tipo Nodo <strong>de</strong>clarado en la estructura<br />

pCabeza = malloc(sizeof(Nodo)); //asignación dinámica <strong>de</strong> memoria al puntero<br />

printf(“Ingrese la informacion <strong>de</strong>l nodo: “);//presenta en pantalla el texto<br />

scanf(“%d”, &dato); //lee el dato ingresado<br />

(*pCabeza).informacion = dato; //al puntero en el campo información se asigna el dato<br />

//ingresado<br />

(*pCabeza).Siguiente = NULL; //el puntero siguiente apunta a null o vacio.<br />

p = pCabeza; //se asigna la cabeza a un puntero para no per<strong>de</strong>r la cabeza y recorrer la lista.<br />

//la sentencia repetitiva do permite llenar y crear los nuevos nodos <strong>de</strong> la lista.<br />

do<br />

{<br />

printf (“Ingrese la información <strong>de</strong>l nodo: “);<br />

scanf (“%d”, &dato);<br />

//se asigna los nuevos valores a la lista<br />

if (dato! = -1)<br />

{<br />

aux = malloc (sizeof(Nodo));<br />

(*aux).informacion = dato;<br />

(*aux).Siguiente = NULL;<br />

(*p).Siguiente = aux;<br />

p = aux;<br />

}<br />

} while(dato != -1);<br />

printf(“\n\n”);<br />

presentar(pCabeza);<br />

printf(“\n\n”);<br />

scanf(“\n\n”);


Anexos<br />

}<br />

void presentar(Nodo* cab){<br />

Nodo* p = NULL;<br />

p = cab;<br />

while (p != NULL) {<br />

printf(“%d, “, (*p).informacion);<br />

p = (*p).Siguiente;<br />

}<br />

}<br />

Guía didáctica: Estructura <strong>de</strong> Datos<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong> 73


Guía didáctica: Estructura <strong>de</strong> Datos<br />

74<br />

Anexo 7<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong><br />

Anexos<br />

Crea la estructura <strong>de</strong> una lista enlazada le aña<strong>de</strong> valores a los nodos y presenta la lista enlazada.<br />

#inclu<strong>de</strong> <br />

struct Elemento {<br />

int información;<br />

struct Elemento* Siguiente;<br />

};<br />

type<strong>de</strong>f struct Elemento Nodo;<br />

main() {<br />

int dato;<br />

Nodo* pCabeza;<br />

Nodo* p;<br />

Nodo* aux;<br />

pCabeza = malloc(sizeof(Nodo));<br />

printf(“Ingrese la información <strong>de</strong>l nodo: “);<br />

scanf(“%d”, &dato);<br />

pCabeza->informacion = dato;<br />

pCabeza->Siguiente = NULL;<br />

p = pCabeza;<br />

do {<br />

printf(“Ingrese la información <strong>de</strong>l nodo: “);<br />

scanf(“%d”, &dato);<br />

if (dato != -1) {<br />

aux = malloc(sizeof(Nodo));<br />

aux->informacion = dato;<br />

aux->Siguiente = NULL;<br />

p->Siguiente = aux;<br />

p = aux;<br />

}<br />

} while(dato != -1);<br />

printf(“\n\n”);<br />

presentar(pCabeza);<br />

printf(“\n\n”);<br />

scanf(“\n\n”);<br />

}<br />

presentar(Nodo* cab)<br />

{<br />

Nodo* p = NULL;<br />

p = cab;<br />

while (p != NULL)<br />

{<br />

printf(“%d, “, p->información);<br />

p = p->Siguiente;<br />

}


}<br />

Anexos<br />

Anexo 8<br />

Guía didáctica: Estructura <strong>de</strong> Datos<br />

Permite crear una lista doblemente enlazada, ingresa los valores correspondientes a los nodos y luego<br />

presenta la información <strong>de</strong> los nodos.<br />

#inclu<strong>de</strong> <br />

#inclu<strong>de</strong> <br />

struct Elemento {<br />

int información;<br />

struct Elemento* Anterior;<br />

struct Elemento* Siguiente;<br />

};<br />

type<strong>de</strong>f struct Elemento Nodo;<br />

void presentar(Nodo* cab);<br />

void presentar2(Nodo* final);<br />

main() {<br />

int dato;<br />

Nodo* pCabeza;<br />

Nodo* p;<br />

Nodo* aux;<br />

}<br />

pCabeza = malloc(sizeof(Nodo));<br />

printf(“Ingrese la información <strong>de</strong>l nodo: “);<br />

scanf(“%d”, &dato);<br />

(*pCabeza).información = dato;<br />

(*pCabeza).Siguiente = NULL;<br />

(*pCabeza).Anterior = NULL;<br />

p = pCabeza;<br />

do {<br />

printf(“Ingrese la información <strong>de</strong>l nodo: “);<br />

scanf(“%d”, &dato);<br />

if (dato != -1) {<br />

aux = malloc(sizeof(Nodo));<br />

(*aux).información = dato;<br />

(*aux).Siguiente = NULL;<br />

(*aux).Anterior = p;<br />

(*p).Siguiente = aux;<br />

p = aux;<br />

}<br />

} while(dato != -1);<br />

printf(“\n\n”);<br />

presentar(pCabeza);<br />

printf(“\n\n”);<br />

presentar2(p);<br />

scanf(“\n\n”);<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong> 75


Guía didáctica: Estructura <strong>de</strong> Datos<br />

void presentar(Nodo* cab){<br />

Nodo* p = NULL;<br />

p = cab;<br />

while (p != NULL) {<br />

printf(“%d, “, (*p).información);<br />

p = (*p).Siguiente;<br />

}<br />

}<br />

void presentar2(Nodo* final){<br />

Nodo* p = NULL;<br />

p = final;<br />

while (p != NULL) {<br />

printf(“%d, “, (*p).información);<br />

p = (*p).Anterior;<br />

}<br />

}<br />

76<br />

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La <strong>Universidad</strong> Católica <strong>de</strong> <strong>Loja</strong><br />

Anexos<br />

DAGC-GERC/ymtene/14-07-2011/68<br />

LFMA/2013-01-02/76

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!