76
18308 Titulación Ciclo ¡ Ingeniero en Informática III Estructura de Datos Guía didáctica 5 créditos Departamento de Ciencias de la Computación y Electrónica Sección Inteligencia y Artificial UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja MODALIDAD ABIERTA Y A DISTANCIA Autores: Daniel Alejandro Guamán Coronel Guido Eduardo Riofrio Calderón Reestructurada por: Manuel Sucunuta Asesoría virtual: www.utpl.edu.ec 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.

Guía Estructura de Datos

Embed Size (px)

DESCRIPTION

Java

Citation preview

Page 1: Guía Estructura de Datos

18308

Titulación Ciclo

¡ Ingeniero en Informática III

Estructura de Datos

Guía didáctica5 créditos

Departamento de Ciencias de la Computación y ElectrónicaSección Inteligencia y Artificial

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJALa Universidad Católica de Loja

MODALIDAD ABIERTA Y A DISTANCIA

Autores:Daniel Alejandro Guamán Coronel

Guido Eduardo Riofrio CalderónReestructurada por:

Manuel Sucunuta

Asesoría virtual:www.utpl.edu.ec

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.

Page 2: Guía Estructura de Datos

ESTRUCTURA DE DATOSGuía didáctica

Daniel Alejandro Guamán CoronelGuido Eduardo Riofrío Calderón

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJACC Ecuador 3.0 By NC ND

Diseño, maquetación e impresión:EDILOJA Cía. Ltda.Telefax: 593 - 7 - 2611418San Cayetano Alto s/[email protected]

Derecho de autor 000356

Segunda ediciónSéptima reimpresión

ISBN-978-9942-00-723-0

Maquetación y diseño digitalEDILOJA Cía. Ltda.

Segunda ediciónISBN digital-978-9942-04-274-3

Esta versión impresa, ha sido licenciada bajo las licencias Creative Commons Ecuador 3.0 de Reconocimiento - no comercial-sin obras derivadas; la cual

obras derivadas. http://www.creativecommons.org/licences/by-nc-nd/3.0/ec/

Octubre, 2013

Page 3: Guía Estructura de Datos

2. Índice ................................................................................................................................................................. 4

3. Introducción ................................................................................................................................................... 6

4. Lineamientos generales del Modelo Educativo basado en competencias y créditos académicos UTPL- ECTS ......................................................................................................... 7

4.1. Competencias genéricas ........................................................................................................................... 84.2. Competencias específicas ......................................................................................................................... 8

5. Bibliografía ..................................................................................................................................................... 95.1. Básica .......................................................................................................................................................... 95.2. Complementaria ........................................................................................................................................ 9Direcciones Electrónicas .................................................................................................................................... 9

6. Orientaciones generales para el estudio ........................................................................................ 11

7. Proceso de enseñanza-aprendizaje para el logro de competencias ............................... 13

PRIMER BIMESTRE

7.1 Planificación para el trabajo del alumno .............................................................................................. 137.2. Sistema de evaluación de la asignatura ................................................................................................ 157.3. Orientaciones específicas para el aprendizaje por competencias ..................................................... 16

Unidad 1: ESTRUCTURAS LINEALES ESTÁTICAS (ARREGLOS) .................................................................................. 16

1.1. Arreglos ...................................................................................................................................................... 161.2. Operaciones con arreglos........................................................................................................................... 201.3. Búsqueda ................................................................................................................................................... 221.4. Operaciones adicionales con arreglo ......................................................................................................... 231.5. Arreglos de dos dimensiones. .................................................................................................................... 25Autoevaluación 1 .................................................................................................................................................. 26

Unidad 2: ESTRUCTURAS DINÁMICAS: APUNTADORES, LISTAS ENLAzADAS ........................................................... 28

2.1. Apuntadores. .............................................................................................................................................. 282.2. Estructura de datos dinámicas. ................................................................................................................. 302.3. Listas enlazadas. ....................................................................................................................................... 302.4. Clasificación de las listas enlazadas. ........................................................................................................ 312.5. Operaciones con listas enlazadas. ............................................................................................................ 32Autoevaluación 2 .................................................................................................................................................. 35

2. Índice

Page 4: Guía Estructura de Datos

SEGUNDO BIMESTRE

7.2. Planificación para el trabajo del alumno .............................................................................................. 367.4. Orientaciones específicas para el aprendizaje por competencias ..................................................... 37

Unidad 3: ESTRUCTURAS DE DATOS NO LINEALES, ÁRBOLES ................................................................................. 37

3.1. Árboles. ...................................................................................................................................................... 373.2. Terminología. ............................................................................................................................................. 383.3. Aplicaciones de los árboles. ...................................................................................................................... 403.4. Árboles binarios. ........................................................................................................................................ 403.5. Recorridos en árboles binarios. ................................................................................................................. 413.6. Árboles binarios de búsqueda. .................................................................................................................. 42Autoevaluación 3 .................................................................................................................................................. 43

Unidad 4: ARCHIVOS.............................................................................................................................................. 45

4.1. Formas de acceso. ..................................................................................................................................... 454.2. Flujos.......................................................................................................................................................... 464.3. Tipo de datos FILE. .................................................................................................................................... 464.4. Abrir un archivo. ........................................................................................................................................ 474.5. Escribir datos. ............................................................................................................................................ 474.6. Leer datos. ................................................................................................................................................. 484.7. Cerrar el archivo. ........................................................................................................................................ 48Autoevaluación 4 .................................................................................................................................................. 49

Unidad 5: GRAFOS ................................................................................................................................................. 50

5.1. Componentes de un grafo. ........................................................................................................................ 515.2. Definiciones. .............................................................................................................................................. 525.3. Representación. ......................................................................................................................................... 53Autoevaluación 5 .................................................................................................................................................. 55

8. Solucionario ................................................................................................................................................... 57

9. Anexos .............................................................................................................................................................. 66

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

Page 5: Guía Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 5

Guía didáctica: Estructura de DatosPreliminares

3. Introducción

“Estructura de Datos” es una asignatura con 5 créditos, forma parte del grupo de materias troncales de carrera de la malla de Ingeniería en Informática de la Escuela de Ciencias de la Computación, modalidad Abierta y a Distancia de la UTPL.

Con los contenidos de la asignatura se pretende cubrir los conocimientos básicos de las estructuras de datos desde la perspectiva computacional, de tal forma que al construir una aplicación, sus programas se diseñen acorde al contexto del problema; escogiendo las estructuras necesarias, con algoritmos eficientes y eficaces que garanticen el correcto funcionamiento de una solución informática.

Múltiples son los estructuras y diversas las alternativas de solución, por lo que el estudiante podrá elegir la mas apropiada que le permita optimizar los recursos computacionales como es: memoria, procesador y medios de almacenamiento. Hoy en día los diversos lenguajes de programación facilitan el uso e implementación de las estructuras de datos, al incorporar componentes mucho mas fáciles de manejar desde el punto de vista de la programación. Sin embargo la esencia conceptual de cada estructura sigue siendo el mismo, por lo que para realizar la parte teórica se a escogido como lenguaje de programación “C” en cualquiera de las versiones.

La temática que abarca la asignatura ha sido estructurada en 5 unidades, distribuidas en 2 para el primer bimestre y 3 para el segundo bimestre.

Para el primer bimestre: la primera unidad comprende el análisis de las estructuras lineales estáticas implementadas con arreglos. En la segundad unidad se realiza el análisis de las estructuras de datos dinámicas, concretamente con lo que se refiere a apuntadores y listas enlazadas.

Para el segundo bimestre, se realiza un análisis de las estructuras de datos no lineales, por lo que en la tercera unidad se abarca el tema de los árboles específicamente con las operaciones que se realizan en los árboles binarios. La unidad cuatro se enfoca a la forma de almacenar información en archivos, y finalmente en la unidad cinco se realiza un análisis general de los grafos, tanto dirigidos como no dirigidos.

Recuerde señor estudiante que el proceso requiere de su esfuerzo y dedicación de su parte, y cualquier inquietud que tenga no dude en hacérmelo conocer ya que estaré junto a usted para acompañarle y orientarle en el proceso de aprendizaje.

Muchos éxitos y buena suerte.

Page 6: Guía Estructura de Datos

Guía didáctica: Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja6

Preliminares

4. Lineamientos generales del Modelo Educativo basado en competencias y créditos académicos UTPL- ECTS

Sr. Estudiante recuerde que usted ha iniciado su formación de tercer nivel con un sistema educativo basado en el desarrollo de competencias a través de créditos académicos. Este modelo le convierte a usted en protagonista de su propia formación y al profesor en mediador de las experiencias de aprendizaje.

Surge entonces la necesidad de que tenga claro dos conceptos fundamentales competencia y crédito académico.

• ¿Qué es una competencia? Entendemos por competencia el conjunto de actitudes, habilidades y conocimientos que el alumno adquiere e incorpora según sus características personales y experiencias laborales y, que se ponen de manifiesto en el desempeño de la actividad profesional. Las competencias se adquieren a lo largo del proceso formativo de la carrera y se desagregan en objetivos de aprendizaje propuestos en cada asignatura.

Elementos de una competencia. Tres son los elementos que podemos distinguir en toda competencia:

¸ Actitudes: son predisposiciones y comportamientos ante situaciones concretas.

¸ Habilidades: son destrezas para ejecutar con éxito tareas, utilizar procedimientos y realizar trabajos. Se desarrollan a través de la práctica y la experiencia.

¸ Conocimientos: constituyen los contenidos científicos, conceptuales, teóricos, conocidos también como el aprendizaje académico.

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

Un crédito académico es la unidad de medida del trabajo del estudiante, implica 32 horas de trabajo del alumno (29 horas de trabajo autónomo y 3 horas de interacción) 1.

Los créditos académicos que el estudiante irá acumulando en el transcurso de la carrera involucran: aprendizaje autónomo (estudio personal), tareas de investigación, interacción en el Entorno Virtual de Aprendizaje (EVA), participación en tutorías, videoconferencias y otros eventos académicos (Jornadas, seminarios, cursos, congresos avalados por la UTPL), prácticas académicas, pasantías preprofesionales y de vinculación con la colectividad; actividades de evaluación; así como la realización del trabajo de titulación.

El modelo adoptado por la UTPL contempla dos tipos de competencias: genéricas y específicas.

¸ Competencias Genéricas: Son aquellas capacidades (actitudes, habilidades y conocimientos) comunes a todas las profesiones que se ofrecen en la UTPL. Constituyen una parte fundamental del perfil que el estudiante debe desarrollar durante su formación.

1 CONESUP (2008): Reglamento del Régimen Académico del Sistema Nacional de Educación Superior, art. 18.

Page 7: Guía Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 7

Guía didáctica: Estructura de DatosPreliminares

¸ Competencias Específicas: son propias de la titulación, aportan a la cualificación específica para la profesión, dándole consistencia social y profesional al perfil formativo.

• Estructura general del programa formativo

Las Unidades Académicas o Escuelas de la UTPL han estructurado el programa formativo contemplando cinco ámbitos o bloques de asignaturas: Formación Básica (10%); Genéricas de carrera (15%); Troncales (35%) Complementarias (10%); Libre configuración (10%) y además, el Practicum que comprende las Pasantías preprofesionales y de vinculación con la colectividad y Practicum Académico (20%).

4.1. Competencias genéricas

- Capacidad para organizar y planificar el tiempo.- Capacidad de abstracción, análisis y síntesis.- Habilidades para buscar, procesar y analizar información procedente de fuentes diversas.- Capacidad de aplicar los conocimientos.- Capacidad para identificar, plantear y resolver problemas.- Capacidad creativa e innovadora.- Capacidad para tomar decisiones.- Capacidad de trabajo en equipo.- Habilidades interpersonales.- Compromiso con la calidad.- Capacidad para formular, diseñar y gestionar proyectos.- Compromiso ético.

4.2. Competencias específicas

Estas competencias se encuentran detalladas en la planificación de cada bimestre.

Page 8: Guía Estructura de Datos

Guía didáctica: Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja8

Preliminares

5. Bibliografía

5.1. Básica

• Joyanes, L. y Zahonero, I. (2005). Programación enC.Metodología, algoritmos y estructuradedatos. Madrid-España: McGrawHill.

Los autores de esta obra tienen una amplia experiencia en temas relacionados con el diseño de algoritmos, desarrollo de programas y en varios lenguaje de programación. El texto se ha seleccionado por cuanto utiliza como lenguaje de desarrollo C, que es un lenguaje que nos permite ir analizando detenidamente las estructuras de datos que se analizarán; inicialmente el texto dispone de capítulos que permiten conocer el lenguaje (c) y no tener problemas con el mismo.

5.2. Complementaria

• Joyanes,L.;Castillo,A.;Sánchez,L.;Zahonero,I.(2005).C.Algoritmos,programaciónyestructurasde datos. Madrid-España: McGrawHill. Serie Schawum.

Es un texto donde los autores enfocan el estudio en base a ejercicios y problemas que plantean una solución, para su análisis. También se plantean ejercicios propuestos que el estudiante los podría resolver.

• KOFFMANElliotB.,WOLFGANGPaul, (2008)Estructuradedatos conC++,México, EditorialMcGraw Hill.

El presente libro contiene información y ejercicios, relacionados con listas, arreglos, objetos los cuales se estudian a lo largo del presente período.

• JOYANESLuis,MARTINEZIgnacio,AZUELAMatilde,GARCIALucas,(2005)EstructuradeDatosenC,España, Editorial Mc Graw Hill.

Es un texto muy didáctico que contiene ejercicios propuestos y resueltos referentes a los temas a llevarse a cabo en el presente estudio como arreglos, colas, listas.

• JOYANES, L. (2000): Programación en C++, Algoritmos, estructura de datos y objetos, España,Editorial Mc Graw Hill.

Texto que posee información de temática relacionado a las estructuras de datos e incluye ejercicios desarrolladosenC++.

Direcciones Electrónicas

• Urrutia, G. (2004): Curso de C [en línea]. Disponible en: http://www.elrincondelc.com/cursoc/cursoc.html[consulta09/09/2009]

Page 9: Guía Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 9

Guía didáctica: Estructura de DatosPreliminares

En esta dirección encontrará codificación referente a la declaración y uso de arreglos, punteros y buenas prácticas en C.

• ZatorSystems(2008):CursoC++.[enlínea].Disponibleen:http://www.zator.com/Cpp/E_Ce.htm[consulta09/09/2009]

Dirección que contiene amplias explicaciones con ejemplos sobre temas referentes a programación en C.

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

Dirección electrónica que contiene información relacionada al tema de árboles en C.

• BibliotecaVirtualUTPL,www.utpl.edu.ec/biblioteca

Page 10: Guía Estructura de Datos

Guía didáctica: Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja10

Preliminares

6. Orientaciones generales para el estudio

En la Biblioteca virtual encontrará recursos digitales referentes a los contenidos de esta asigna-tura, así como de diferentes áreas del conocimiento.

La presente asignatura al ser una materia troncal de la carrera de Ingeniería en Informática, constituye una de las bases fundamentales para la formación del estudiante dentro de su área profesional, por lo tanto, le ofrecemos algunas orientaciones de como aprovechar al máximo las diversas ayudas que se incluyen en recursos didácticos como:

1) La guía didáctica:

Le permitirá orientarse sobre los temas a estudiar, además contiene ejercicios de autoevaluación que le permitirán medir su grado de comprensión. Por lo tanto lea detenidamente la Guía Didáctica, ya que en ella se encuentran las indicaciones que guiarán su autoaprendizaje

2) El texto básico:

En este texto se encuentran los contenidos que se van a tratar en la presente asignatura, su uso esta restringido a la guía didáctica, esto es, que deberá acudir a la guía didáctica para saber cuales son los temas que deberá abordar. Por ello, se recomienda trabajar en forma paralela la guía con el texto básico.

3) El entorno virtual de aprendizaje (EVA):

Es un espacio donde podrá compartir con sus compañeros y con su profesor mediante mensajes, anuncios, foros, tareas, etc. Además su interacción en este medio es obligatorio, ya que como estudiante de ésta área es un deber usar este tipo de recursos.

4) Trabajos a distancia:

Son una estrategia de aprendizaje por tanto contando con todos los medios necesarios resuelva los ejercicios y casos que allí se plantean. Además estos trabajos tienen una valoración de 6 puntos con el tiempo suficiente para desarrollarlos.

5) Tutoría:

Es un tiempo semanal que como profesores dedicamos para atender las inquietudes en relación a los contenidos o desarrollo de trabajos, para ello se publicará un horario en el cual podrán asistir personalmente o contactarse vía telefónica, el mismo que se detalla en la carátula de la evaluación a distancia.

En cuanto a la forma de trabajo damos algunos lineamientos que le ayudarán a aprovechar su tiempo y lograr mejores resultados:

1) El tiempo que dedique a la lectura y desarrollo de los ejercicios es fundamental, por lo tanto deberá dedicar al menos 6 horas semanales. Puede apoyarse con técnicas como subrayado, cuadros sinópticos y sobre todo mapas conceptuales.

Page 11: Guía Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 11

Guía didáctica: Estructura de DatosPreliminares

2) Recuerde que cuenta con su profesor tutor para la comprensión de los temas, entonces la comunicación con el mismo será fundamental, para lo cual debe familiarizarse con las formas de comunicación que tiene, ya sea por teléfono (consultar horario de tutoría), email, chat, y otras herramientas tecnológicas. Recuerde además que existe una variada información en el internet, bibliotecas digitales y también la documentación que su profesor le acerca a través del EVA.

3) Lea detenidamente la guía didáctica, ya que en ella se encuentran las indicaciones que guiarán su autoaprendizaje. Revise y analice cada uno de los temas del texto básico y utilice técnicas de estudio como el subrayado, resúmenes, cuadros sinópticos, mentefactos y/o cualquier estrategia de aprendizaje que se adecue a su forma de aprender.

4) Como parte de su autoaprendizaje es recomendable que resuelva las autoevaluaciones ubicadas al final de cada unidad de estudio, hágalas sin consultar ningún documento y luego verifique las respuestas en el solucionario ubicado al final de la guía didáctica. El contenido científico para el desarrollo de la evaluación a distancia usted lo encontrará en el texto básico y la guía didáctica.

Para poder ser ayudado en las diferentes temáticas por los profesores / tutores usted puede utilizar medios como: correo electrónico, entorno virtual de aprendizaje (EVA), chat, línea telefónica.

En la guía didáctica se incluyen algunas imágenes que sirven de focalizadores para iden-tificar apropiadamente el texto, a continuación se indican:

Icono Descripción

Este ícono se usará para solicitarle la lectura de una sección del texto básico (Lecturas recomendadas,textocomplementarios,OCW)

Desarrollo de autoevaluaciones, al final de cada unidad

Ejercicios y actividades recomendadas en toda la guía

Profundizar temas

Para recordar algunos aspectos importantes

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

Page 12: Guía Estructura de Datos
Page 13: Guía Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 13

Guía didáctica: Estructura de DatosPrimer bimestre

7. Proceso de enseñanza-aprendizaje para el logro de competencias

PRIMER BIMESTRE

7.1 Planificación para el trabajo del alumno

COMPETENCIAS ESPECÍFICAS

OBJETIVOS DE APRENDIZAJE

CONTENIDOS CRONOGRAMA ORIENTATIVO ACTIVIDADES DE

APRENDIZAJEUnidades/Temas Tiempo estimado

Analizar las necesidades de conocimiento necesarias para resolver un problema.

Comprender, analizar y resolver problemas aplicando los métodos de la ciencia y la ingeniería.

Aplicar la lógica matemática en el contexto de las Ciencias de la Computación, con proyección, al diseño de circuitos, programación, análisis y desarrollo de algoritmos.

• Reconoceeltipodeestructuraestática lineal a utlizar en la solución de un determinado problema.

• Resuelveproblemasdeíndolealgebraico al utilizando arreglos.

• Proponeunmétodopara ordenar una lista de elementos de diferente tipo de datos.

UNIDAD 1:

1.1 Arreglos

1.2 Operaciones con Arreglos

1.3 Búsqueda

1.4 Arreglos de dos dimensiones

1.5 Autoevaluación 1

Semana 1, 2 y 3.

18 horas de autoestudio

12 horas de interacción con el EVA

Revisión de los capítulos preliminares del texto base (capítulos 3, 4, 6 y 7).

Lectura del capítulo 9 (Arrays) y 10 (Algoritmos de ordenación y búsqueda) del texto básico tal como se indica en la guía didáctica complementado con las actividades de la unidad 1 de la guía didáctica

Page 14: Guía Estructura de Datos

Guía didáctica: Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja14

Primer bimestre

Diseño e implementación de programas de aplicación.

Diagnóstico y solución de problemas en software.

Desarrollo de la primera autoevaluación que se indica en la guía didactica.

Realizar la interacción en el EVA: foro

• Identificalaformacorrectadecrear apuntadores.

• Analizalarepresetacióndepunteros en la memoría del computador.

• Identificalaformaderepresentar las estructuras de datos dinámicas.

• Proponesolucionesparacreary recorrer listas enlazadas

UNIDAD 2:

2.1 Apuntadores

2.2 Estructura de datos dinámicas

2.3 Listas enlazadas

2.4 Clasificación de las listas enlazadas

2.5 Operaciones con listas enlazadas

2.6 Autoevaluación 2

Semana 4, 5 y 6

18 horas de autoestudio

12 horas de interacción con el EVA

Lectura de los capítulos 12 y 18 del texto básico tal como se indica en la guía didáctica complementado con las actividades de la unidad 2 de la guía didáctica

Desarrollo de la segunda autoevaluación que se indica en la guía didactica.

Realizar la interacción en el EVA: foro

Analizar ejercicios adicionales que se indicarán en el EVA.

UNIDADES 1 Y 2 Semana 7 y 8

12 horas de autoestudio

8 horas de interacción

Repaso general de la materia

Desarrollo ejercicios adicionales en el EVA

Page 15: Guía Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 15

Guía didáctica: Estructura de DatosPrimer bimestre

7.2. Sistema de evaluación de la asignatura

1. A

utoe

valu

ació

n *

2. Heteroevaluación

3. C

oeva

luac

ión

Evaluación a Distancia

Eval

uaci

ón

Pres

enci

al

Part

e O

bjet

iva

Part

e de

En

sayo

Inte

racc

ión

con

el E

VA

Actit

udes

Comportamiento ético X X X X X X

Cumplimiento, puntualidad, responsabilidad X X X

Esfuerzo e interés en los trabajos X X X X X X

Respeto a las personas y a las normas de comunicación X

Hab

ilida

des

Creatividad e iniciativa X

Contribución en el trabajo colaborativo y de equipo

Presentación, orden y ortografía X X

Emite juicios de valor argumentadamente

Cono

cim

ient

os

Dominio del contenido X X X X X

Investigación (cita fuentes de consulta) X X

Aporta con criterios y soluciones X X

Análisis y profundidad en el desarrollo de temas

PORCENTAJE

Estr

ateg

ia d

e ap

rend

izaj

e 10% 20% 30%

Máx

imo

1 pu

nto

(Com

plet

a la

eva

luac

ión

a di

stan

cia) 70%

Act

ivid

ades

pre

senc

iale

s y

en e

l EVA

Puntaje 2 4 6 14

TOTAL 20 puntos

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

Sr. estudiante:

Tenga presente que la finalidad de la valoración cualitativa es principalmente formativa; sin embargo, en circunstancias especiales podría afectarle positiva o negativamente en su calificación cuantitativa.

Page 16: Guía Estructura de Datos

Guía didáctica: Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja16

Primer bimestre

7.3. Orientaciones específicas para el aprendizaje por competencias

Unidad 1: ESTRUCTURAS LINEALES ESTÁTICAS (ARREGLOS)

Recursos educativos multimedia

Recursos educativos multimedia

Los tipos de datos son uno de los elementos fundamentales para construir aplicaciones, por lo tanto en este capítulo abordaremos el estudio de uno de los tipos de datos compuestos como son los arreglos. Para trabajar con estas estructuras de datos es necesario tener algunos conocimiento previos, como es:

• Definición de tipos de datos básicos (enteros, decimales, carácter, cadenas de caracteres,booleanos, etc).

• Usodeestructurassecuenciales,condicionalesyrepetitivas

• ConocimientosbásicosdellenguajeC,entreotros.

Si no tiene los conocimientos básicos se sugiere hacer una revisión de los capítulos: 3 (El lenguaje C: elementos básicos), 4 (Operadores y expresiones), 6 (Estructuras de control: bucles) y 7 (Funciones) del texto básico, en el que se indica de forma detallada estos temas.

1.1. Arreglos

Una vez que cuenta con los conocimientos previos es hora de empezar con el estudio de los arreglos para utilizarlos en ejercicios comunes de tratamiento de información a nivel de listas.

Page 17: Guía Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 17

Guía didáctica: Estructura de DatosPrimer bimestre

Revise el apartado 9.1. Arrays del texto base. Recalque su análisis en la forma de declarar, de definir el tamaño, los subíndices y el almacenamiento en memoria. Puede utilizar la técnica del subrayado, esto ayudará a lograr una mejor comprensión del tema.

Ahora que ya tiene claro el concepto de los arreglos es conveniente asociar esta estructura con los problemas que se desea solucionar. En términos generales un arreglo lo podemos utilizar en todos aquellos casos en los que se desea trabajar con un conjunto de elementos, y que para hacer referencia a estos datos se lo hace a través de un sólo identificador, pero por supuesto para acceder a cada elemento se lo realiza mediante un índice.

En resumen los arreglos poseen las siguientes características:

• Finitos: todo arreglo tiene un límite, debe determinarse cuál es el número máximo de elementos que podrán formar parte del arreglo.

• Homogéneos: todos los elementos de un arreglo son del mismo tipo de dato, es decir: enteros, string, char, double, etc., pero nunca una combinación de mas de un tipo.

• Ordenados: se puede determinar cuál es el primer, segundo, tercer, enésimo elemento.

Además recordemos que los arreglos pueden ser de varios tipos, destacando los siguientes:

• Unidimensionales(Unadimensión).• Bidimensionales(Dosdimensiones).• Tresomásdimensiones.

La mayoría de los lenguajes de programación al trabajar con arreglos utiliza la indexación basada en cero, que consiste en que el subíndice de inicio del arre-glo es cero. Por tanto si hablamos de un arreglo con 10 elementos sus subíndi-ces serán desde 0 al 9, muchas de las veces se tiende a confundir la posición de cierto elemento por ésta situación.

En la figura 1.1 se representa un arreglo unidimensional con las edades de un grupo de 10 personas.

edades 45 37 39 29 31 48 45 35 32 510 1 2 3 4 5 6 7 8 9

índices

Figura 1.1 Representación gráfica de un arreglo unidimensional

En este arreglo es importante resaltar lo siguiente:

• Tieneunúnicoidentificador:edades

• Sutamañoesde:10elementos

• Cadaunodeloselementosselosidentificaatravésdeelíndice.Porejemplo:enelsubíndice3delarreglo se encuentra el elemento 29, que sería el cuarto elemento de la lista.

Page 18: Guía Estructura de Datos

Guía didáctica: Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja18

Primer bimestre

Utilizando el lenguaje de programación C, la definición del arreglo de la figura 1.1 sería:

intedades[10];

Al hacer esta definición, en la memoria del computador se reserva el espacio de memoria de cierto tamaño (esto dependerá de la longitud de palabra del procesador). En el supuesto caso que el tipo de dato int ocupe dos bytes, el espacio de memoria para la definición anterior sería de 20 bytes. Se puede utilizar el operador sizeof para saber cuantos bytes ocupa el arreglo, se puede utilizar con la siguiente instrucción:

n = sizeof(edades);

La forma de inicializar un arreglo puede ser de varias formas, depende de la necesidad y las circunstancias. A veces puede ser necesario inicializarlo al momento de definirlo o en otras ocasiones ingresarlo desde una fuente externa (a la aplicación), que puede ser desde la consola o de algún medio de almacenamiento e incluso desde alguna librería o programa.

Finalizado el presente apartado se plantean ejercicios que permiten afianzar los conocimientos, por lo que deberá realizar el respectivo análisis y desarrollo basándose en los contenidos anteriormente tratados.

Ejercicio 1.1

1) Indique ejemplos en los cuales considera se aplica arreglos en la vida cotidiana.2) Defina un índice y un elemento de un arreglo unidimensional.3) Si tuviéramos un arreglo de caracteres con el texto “ESTRUCUTRA” ¿cuál sería el índice de la letra

“T”?.

Ejercicio 1.2

Un curso de Computación tiene 50 alumnos matriculados, si Ud. tuviese que diseñar un arreglo para registrarlasnotasdelosalumnosrespondalosiguienteutilizandolaprogramaciónenC/C++:

1) ¿De qué tipo de dato lo definiría?2) ¿Qué tamaño tendría el arreglo?3) ¿Cuál es el índice inferior del arreglo?4) ¿Cuál es el índice superior del arreglo?5) ¿Cuál sería la definición?

Ejercicio 1.3

RealiceunprogramaenC/C++quepermitaingresarunarreglodeenterosde5elementos,luegoquehaya ingresado los elementos al arreglo proceda a realizar las siguientes operaciones:

Page 19: Guía Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 19

Guía didáctica: Estructura de DatosPrimer bimestre

1. Mostrar o leer cada uno de los elementos ingresados.2. Lea el elemento que se encuentra en la posición 3.

Ejercicio 1.4

CuáleselresultadodelaejecucióndelsiguienteprogramaenC/C++queutilicefuncionesdelalibrería“string.h” para manipular cadenas de texto.

#include <stdio.h>#include <string.h>#include <ctype.h>

charcadena0[100];charcadena1[]=”Universidad”;charcadena2[]=”Loja”;charcadena3[]=”Tecnicade”;char cadena4;int i;main(){

printf(“El contenido de la cadena1 es:%s\n\n“,cadena1);printf(“El tamaño del arreglo cadena1 es:%d\n\n“,sizeof(cadena1));printf(“El tamaño de la cadena de texto es:%d\n\n”,strlen(cadena1));printf(“El resultado de la concatenacion es:%s\n\n”,strcat(cadena1, cadena2));cadena4 = strpbrk(cadena1, “L“);strncpy(cadena0,cadena1,11);strcat(cadena0,cadena4);for(i=0;i<strlen(cadena0);i++){

cadena0[i]=toupper(cadena0[i]);}printf(“%s\n\n“,cadena0);scanf(“\n”);

}Resultado:

Page 20: Guía Estructura de Datos

Guía didáctica: Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja20

Primer bimestre

Detalle del código:

Líneas de la 1 a la 4 Librerías necesarias para trabajar con funciones tipo string y para presentar los datos en pantalla y poder leerlos.

Líneas de la 6 a la 9 En estas líneas se declaran los arreglos de tipo de dato char para almacenar las cadenas de texto.

Línea 10 En C/C++ una cadena también puede ser declarada como unpuntero a char en este caso las funciones de manipulación de string interpretan a un dato de este tipo hasta encontrar en primer carácter nulo.

Líneas 14 a la 17 En la primera línea se determina cuantos elementos tiene la estructura desde el punto de vista de un arreglo, como se podrá dar cuenta el valor retornado es 12, es decir uno más del total de letras que tiene la cadena, esto se debe a que en el arreglo se toma en cuenta el carácter nulo que existe al final de todo el string. En la segunda línea se utiliza las funciones de string, por lo tanto estas funciones no toman en cuenta el dato nulo como parte de una cadena de caracteres.

Líneas 18 a la 24 La función strcat se utiliza para concatenar cadenas, la función strpbrk divide un string en base a un carácter determinado y retorna el string que está después de dicho caracter.

1.2. Operaciones con arreglos

Bien, una vez que hemos estudiado los aspectos fundamentales de los arreglos vamos a revisar algunos algoritmos y técnicas para manipular los datos de estas estructuras, es importante que ponga especial atención a estos algoritmos ya que los mismos son la base para desarrollar y resolver aplicaciones específicas en programación utilizando cualquier lenguaje de programación.

Dentro de las operaciones que intervienen en los arreglos constan: lectura/escritura, asignación, actualización, ordenación y búsqueda; las operaciones como declaración, lectura y asignación de datos ya se estudiaron en los ejercicios anteriores que usted realizó; ahora conviene revisar los temas de búsqueda, ordenación.

Antes de abordar estos temas es necesario que estudie en el texto básico los temas relacionados a Algoritmos de Ordenación y Búsqueda los mismos que le ayudarán a comprender de mejor manera lo que se pretende en este capítulo.

Del capítulo 10 revise el apartado 10.1. Ordenación, 10. 2 Ordenación por burbuja, 10.3 Ordenación por selección y 10.4 Ordenación por inserción del texto base. Realice un análisis de los algoritmos que utilizan cada método.

La ordenación, clasificación de datos (en inglés, sort) es una operación que consistente en disponer un conjunto de datos en un orden con respecto a un criterio del conjunto. Una lista se dice que está ordenada por la clave k si la lista está en orden ascendente o descendente con respecto a esta clave.

Page 21: Guía Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 21

Guía didáctica: Estructura de DatosPrimer bimestre

• Lalistasedicequeestáenordenascendentesi: i<jimplicaquek[i]<=k[j]

• ysedicequeestáenordendescendentesi: i>jimplicaquek[i]<=k[j]

• paratodosloselementosdelalista.

Finalizado el presente apartado se plantean ejercicios que permiten afianzar los conocimientos, por lo que deberá realizar el respectivo análisis y desarrollo basándose en los contenidos anteriormente tratados.

Ejercicio 1.5

Ordene de forma ascendente y de forma descendente lo siguiente:

1) 18, 34, 16, 25, 67, 2, 17, 29

2) Análisis matemático, Cálculo, Sistemas, Computación, Análisis Financiero, Fundamentos de la programación, Fundamentos de algoritmia.

3) 12.5, 25.3, 12.7, 34.5, 34, 27, 54.3El algoritmo de la burbuja (apartado 10.2.1. del texto base) es bastante utilizado y precisamente en la página 354 del texto base se realiza una demostración paso a paso para ordenar un arreglo de 5 elementos. Preste una especial atención a esta demostración ya que en si es el desarrollo del algoritmo.

En el apartado 10.2.2 Codificación del algoritmo de la burbuja se detalla la codificación de éste método.

Ejercicio 1.6

Dado el siguiente arreglo:

45 37 39 29 31

1) Realice la secuencia de ordenamiento aplicando el algoritmo de la burbuja (apóyese en el ejemplo de la página 354 del texto base).

2) Realice una ejecución manual con la codificación del algoritmo de la burbuja que se presenta en el texto base en la página 355.

En el Anexo 1, se encuentra un programa que permite ordenar los elementos de un arreglo utilizando el algoritmo por burbuja.

Page 22: Guía Estructura de Datos

Guía didáctica: Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja22

Primer bimestre

Ejercicio 1.7

Dado el siguiente arreglo:

48 45 35 32 51

1) Realice la secuencia de ordenamiento aplicando el algoritmo por selección (apóyese en el ejemplo de la página 357 del texto base).

2) Realice una ejecución manual con la codificación del algoritmo por selección que se presenta en el texto base en la página 358

En el Anexo 2, se encuentra un programa que permite ordenar los elementos de un arreglo utilizando el algoritmo por selección.

Ejercicio 1.8

Dado los siguientes datos: 2, 5, 7, 1, 4, 8

1) Realice gráficamente como se insertarían cada uno de los elementos en el arreglo (apóyese en el ejemplo de la página 359)

2) Realice la ejecución manual con la codificación del algoritmo de inserción que se presenta en el texto base en la página 360.

En el Anexo 3, se encuentra un programa que permite ordenar los elementos de un arreglo utilizando el algoritmo de inserción.

1.3. Búsqueda

Otra de las operaciones que se pueden realizar con los arreglos son las búsquedas, por ejemplo si dispone de una nómina y desea encontrar determinado empleado entonces tiene que aplicar un algoritmo de búsqueda adecuado. Las búsquedas pueden ser de dos formas: secuencial y binaria.

Revise el apartado 10.7.3 Análisis de los algoritmos de búsqueda binaria, del texto base. Analice detenidamente las codificaciones de los algoritmos.

Comúnmente la búsqueda secuencial se utiliza en arreglos desordenados, y la búsqueda binaria en arreglos ordenados. Una de las desventajas de la Búsqueda Secuencial es la ineficiencia cuando se tiene una gran cantidad de datos por el tiempo que se tiene para realizar la búsqueda.

Page 23: Guía Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 23

Guía didáctica: Estructura de DatosPrimer bimestre

En el Anexo 4 encontrará el programa que permite realizar la búsqueda secuencial en arreglos

Tome en cuenta que cuando elabora algoritmos de búsqueda está condicionado a verificar si un elemento se encuentra o no en el arreglo, para ello se podría aplicar la siguiente sección de código.encontrado = 0;

for{i=0;i<tamanioMaximo;i++)if(datos[i]==valorBuscado){

encontrado = 1;break;

}

Revise el apartado 10.7.1 Búsqueda binaria y 10.7.2 Algoritmo y codifi-cación de la búsqueda binaria, del texto base. Analice detenidamente las codificaciones de los algoritmos.

Con los arreglos ordenados utilizaremos la búsqueda binaria la misma que tiene como ventaja principal el tiempo de respuesta que se obtiene al momento de buscar un elemento en la lista.

Hablando de las búsquedas en arreglos, es común que surjan inquietudes tales como: ¿Cuáles son las semejanzas y diferencias de la Búsqueda Binaria y Secuencial?, ¿Realizan el mismo proceso?, ¿Se utilizan los mismos bucles?, por lo que es importante poner atención al análisis que se hace en el texto base al final del apartado 10.7.3.

En el Anexo 5 encontrará el programa que permite realizar la búsqueda binaria en arreglos

1.4. Operaciones adicionales con arreglo

En los arreglos a mas de realizar el ordenamiento y búsquedas, se pueden realizar otras operaciones como es: insertar, eliminar o modificar un elemento y los procesos difieren si estamos frente a un arreglo cuyo elementos estén ordenados o desordenados.

• Inserciónenunarreglodesordenado

La operación de insertar nuevos elementos en un arreglo desordenado generalmente se lo hace al final del mismo, pero dependiendo de las características del problema esta inserción puede realizarse al inicio verificando si el arreglo se encuentra lleno o con información hasta dicha posición, una buena práctica para entender éste y los demás algoritmos es que desarrolle programas que satisfagan las posibilidades de inserción, tomando como referencia las definiciones, algoritmos y ejercicios que se proponen en el texto básico y las que usted pueda consultar en la bibliografía complementaria o electrónica.

Finalizado el presente apartado se plantean ejercicios que permiten afianzar los conocimientos, por lo que deberá realizar el respectivo análisis y desarrollo basándose en los contenidos anteriormente tratados.

Page 24: Guía Estructura de Datos

Guía didáctica: Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja24

Primer bimestre

Ejercicio 1.9

RealiceunalgoritmoenC/C++quepermitarealizarinsercióndenuevoselementosalinicioyfinaldelarreglo. Tal como se indica a continuación:

Arreglo Original:

5 7 9 2 4

Insertar el número 3 al Inicio

3 5 7 9 2 4

Insertar el número 10 al final

3 5 7 9 2 4 10

• Inserciónenarregloordenados

La inserción de nuevos elementos en arreglos ordenados debe realizarse exactamente en el lugar que le corresponde de acuerdo al orden del mismo, a diferencia de los arreglos desordenados en el cual se podía hacer al inicio, final o cualquier posición.

• Modificación:

Modificar un elemento significa reemplazar el valor existente por un nuevo dato, para cumplir con este propósito primeramente debemos buscar el elemento, para lo cual se puede utilizar la función de búsqueda estudiada anteriormente (Secuencial) y asignarle el nuevo valor.

5 7 9 2

5 7 8 2 4

• Eliminación:

El método de búsqueda es sobre el cual gira el proceso de eliminación ya que se debe buscar el dato a eliminar y posteriormente mover el número que esta a la derecha del elemento eliminado. Recuerde que al eliminar un elemento del arreglo la posición del cual se elimina queda vacío, por ende debe llenarse dicho espacio.

Finalizado el presente apartado se plantean ejercicios que permiten afianzar los conocimientos, por lo que deberá realizar el respectivo análisis y desarrollo basándose en los contenidos anteriormente tratados.

Nuevovalorareemplazar por el 9 en la

posición 2 del arreglo.

Page 25: Guía Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 25

Guía didáctica: Estructura de DatosPrimer bimestre

Ejercicio 1.10

Indique cuál es la diferencia o diferencias y semejanzas entre la búsqueda binaria y la búsqueda secuencial en arreglos.

1.5. Arreglos de dos dimensiones.

Luego de revisar los arreglos unidimensionales o de una dimensión (una sola fila con varias columnas), con las operaciones que se pueden aplicar sobre estos ya podemos estudiar los arreglos de dos dimensiones o matrices, la lógica de los programas que se aplican a las matrices no difieren mucho con las estudiadas previamente y los que revisó en el texto básico, en este caso se debe tener en cuenta que se aumenta un índice más y en consecuencia para recorrer la matriz se utilizan dos procesos o sentencias de control repetitivas.

¿Cómo identificar los arreglos bidimensionales?, les proponemos algunos ejemplos: ¿Qué tienen en común las tablas, las hojas de Excel y las matrices en matemáticas? ¿Ha identificado lo que tienen en común?, pues si, lo común es que todos tienen filas y columnas, ahora en un arreglo bidimensional al igual que un arreglo unidimensional se tienen elementos e índices los cuales hacen referencia a la fila y columna en la cual se encuentra dispuesto el mismo, a continuación en la figura 1.2 se presenta de forma gráfica la estructura de una matriz.

FILA

S

COLUMNAS0 1 3

0 [0][0] [0][1] [0][2] [0][3]1 [1][0] [1][1] [1][2] [1][3]2 [2][0] [2][1] [2][2] [2][3]3 [3][0] [3][1] [3][2] [3][3]

Figura 1.2: Estructura Gráfica de una matriz

Junto con el texto básico y la complementaria que usted crea conveniente, en el capítulo relacionado a arreglos bidimensionales, vamos a desarrollar algunos ejercicios que nos permitirán conocer algo más acerca de los arreglos bidimensionales y sus capacidades en operaciones.

Revise el apartado 9.4. Arrays multidimensionales, del texto base. Analice detenidamente y en lo posible conteste las inquietudes que se mencionaron anteriormente.

Recuerde que para declarar un arreglo de dos dimensiones de tipo entero y de tamaño de 4 filas por 5 columnas, se lo define de la siguiente manera:

intmatriz[4][5];

Finalizado el presente apartado se plantea un ejercicio que permiten afianzar los conocimientos, por lo que deberá realizar el respectivo análisis y desarrollo basándose en los contenidos anteriormente tratados.

Posición de un elemento dentro

de la matriz, posición fila1,

columna2.

Page 26: Guía Estructura de Datos

Guía didáctica: Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja26

Primer bimestre

Ejercicio 1.11

DiseñeyelaboreunalgoritmoenC/C++quepermitacrearunarreglodedimensión3x4,yluegorealicelas operaciones de ingreso y lectura de los valores en la matriz.

Esperamos que esta unidad haya cumplido las expectativas de adquirir conocimientos básicos y destrezas en el ámbito de las estructuras de datos estáticas, recuerde que si existe algún tema que aun no está claro se puede comunicar con sus profesores / tutores a través del EVA, correo electrónico, línea telefónica.

Hemos culminado el estudio de la primera unidad y es hora de realizar una autoevaluación para identificar el avance de su aprendizaje, le invitamos a desarrollarla y le deseamos éxitos, recuerde que puede comprobar sus respuestas con el solucionario ubicado al final de la guía didáctica.

Autoevaluación 1

1. EscribaunaVsiconsideraquelaafirmaciónesVERDADERAounaFsilaconsideraFALSA.

1) Un array es una secuencia de objetos combinados de tipo entero y string. ( )

2) Un arreglo está compuesto por índices ( )

3) EnelarreglodetextoAUTOEVALUACION,laletra¨E¨seencuentraenlaposición5. ( )

4) El tamaño de un arreglo es máximo de 10 elementos. ( )

5) Lasiguientedeclaracióndearreglo:intnotas[8],permitedeclararunarreglode8elementos de tipo entero.

( )

6) Los arreglos unidimensionales contienen n filas. ( )

7) Los arreglos bidimensionales son conocidos como tablas o matrices. ( )

8) Los arreglos bidimensionales contienen columnas y filas. ( )

9) Dentro de las operaciones con arreglos constan: lectura, escritura, inserción, búsqueda.

( )

10) Para acceder a un elemento de una matriz que se encuentra en una posición específicaseprocedeArreglo[1][3].

( )

Page 27: Guía Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 27

Guía didáctica: Estructura de DatosPrimer bimestre

Resuelva lo siguiente

Parte A:

2. Declare un arreglo de orden “m x n”, puede ser tres filas y tres columnas. Se desea registrar la siguiente matriz:

5 6 9

10 1 7

3 5 2

3. Escriba el código para presentar los elementos de la matriz creada en el punto 1.

4. Escriba el código para obtener los elementos de la diagonal principal de la matriz declarada y páselos a un arreglo unidimensional.

5. Presente gráficamente el arreglo unidimensional del punto anterior ordenado de forma ascendente y forma descendente.

Parte B:

6. Cuál es la diferencia entre un arreglo unidimensional y un arreglo bidimensional.

7. ¿Cuáles son las dos formas de inicializar una estructura?

8. Escriba los pasos que sigue el algoritmo de selección.

Ir a solucionario

Page 28: Guía Estructura de Datos

Guía didáctica: Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja28

Primer bimestre

Unidad 2: ESTRUCTURAS dINÁmICAS: ApUNTAdORES, LISTAS ENLAzAdAS

Recursos educativos multimedia

En la presente unidad estudiaremos otro tipo de estructuras de datos, las mismas que presentan una gran ventaja en cuanto se refiere a la flexibilidad de uso, si bien es cierto, el uso de arreglos nos ayuda mucho en el desarrollo de aplicaciones, estos presentan la desventaja que se podría reservar más memoria de la que se necesita o que en algún momento nos falte más de la reservada.

Hasta ahora hemos estudiado algunas de las operaciones que se realizan sobre estructuras de datos estáticas, es decir, que ocupan un valor fijo en memoria en el momento de compilación. A continuación estudiaremos estructuras de datos dinámicas las mismas que se crean dinámicamente en el momento de la ejecución del programa, esto se logra mediante el uso de punteros o apuntadores.

2.1. Apuntadores.

Bien, antes de continuar retomemos el estudio del texto básico para identificar algunos conceptos de interés e importancia en Punteros.

Revisemos ahora el capítulo 12 del texto base. Los apartados a revisar son: 12.1 Direcciones en memoria, 12.2 Concepto de puntero, 12.3 Punteros NULL y void.

En el texto básico se encuentran algunas definiciones de apuntadores, pues revisemos otra definición que también explica el tema de punteros: “Un puntero es un tipo de dato simple que contiene la dirección de una variable o estructura, en vez de un valor de dato como lo estudiamos con los arreglos”.

Tenga presente que los datos en punteros se almacenan en la memoria RAM en posiciones especificas, a las mismas que se acceden mediante valores hexadecimales.

Bien, ¿hemos revisado la definición de lo que es un puntero? se podría encontrar más de una en la bibliografía complementaria o en las referencias web. Ahora que ha revisado la teoría de punteros revisemos gráficamente como podría representar un puntero:

P

n 850

Page 29: Guía Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 29

Guía didáctica: Estructura de DatosPrimer bimestre

Explicando la representación gráfica anterior, se puede decir que el valor de un puntero (p) es una dirección(n). La dirección depende del estado de la computadora en la cual se ejecuta el programa.

Está claro ¿qué es un puntero y cómo se representan en memoria los mismos?, les invito a que continuemos el estudio de las estructuras de datos dinámicas las cuales empezamos en el siguiente apartado.

Finalizado el presente apartado se plantean ejercicios que permiten afianzar los conocimientos, por lo que deberá realizar el respectivo análisis y desarrollo basándose en los contenidos anteriormente tratados.

Ejercicio 2.1

Complete el cuadro explicando que es lo que realiza cada definición

int *ptr1; Puntero a un tipo de dato entero (int).long *ptr2;char *ptr3;float *f;

Ejercicio 2.2

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

#include <stdio.h>

#include <stdlib.h>

void main(){

int n = 10;

long *dato;

float *f;

int* p = &n;

int *q;

q = p;

printf(“n = %d\n“,n);

printf(“&n = %d:\n“,&n);

printf(“p = %d:\n“,p);

printf(“&p = %d:\n“,&p);printf(“q = %d:\n“,q);

}

Page 30: Guía Estructura de Datos

Guía didáctica: Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja30

Primer bimestre

2.2. Estructura de datos dinámicas.

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

Revisemos ahora el capítulo 13 del texto base. Los apartados a revisar son: 13.1 Gestión dinámica de memoria, 13.2 función de asignación de memoria malloc().

Recuerde que la definición de un apuntador, se la realiza de la siguiente manera:

int *p;

Luego se debe asignar el respectivo espacio de memoria a la variable apuntador, especialmente cuando se trabaja con tipos compuestos, como es el caso de las estructuras. La asignación de memoria sería entonces:

P = (int*)malloc(sizeof(int))

Una vez revisada la parte teórica en el texto básico y apoyado en lo que usted puede consultar en la bibliografía complementaria o web dispóngase a realizar los siguientes ejercicios.

2.3. Listas enlazadas.

Una lista enlazada se conoce como una colección o secuencia de elementos que se encuentran dispuestos uno tras otro en las que cada elemento se conecta con el siguiente elemento por un enlace o puntero.

Revisemos ahora el capítulo 18 del texto base. Los apartados a revisar son: 18.1. Fundamentos teóricos, 18.2. Clasificación de las listas enlazadas y 18.3. Operaciones en listas enlazadas.

Para poder declarar y utilizar las listas, debería conocer cuales son los elementos que componen un puntero, ¿recuerda cuáles son?, revisemos el siguiente gráfico:

Figura 2.1 Elementos de un puntero en lista enlazada.

Es necesario diferenciar entre las dos entidades implicadas en el apuntamiento:

Lavariablepuntero(Quienhaceelapuntamiento)[.]

Lavariableapuntada(Aquienseapunta)[ ]

Si revisamos el texto básico podremos identificar ejemplos de declaración de listas enlazadas.

Page 31: Guía Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 31

Guía didáctica: Estructura de DatosPrimer bimestre

Para profundizar en los temas de listas enlazadas les invito a revisar la temática en el texto básico en la cual se explica los elementos de las listas enlazadas como son enlaces, dirección de memoria, representación en memoria, etc., es necesario que revise los ejercicios resueltos que se indican en el mismo.

Ahora Bien, revisemos como vamos evolucionando en el estudio de las estructuras de datos dinámicas, para ello desarrolle los siguientes ejercicios.

Ejercicio 2.3

Proponga 5 ejemplos de listas enlazadas que ud. pueda identificar en la vida diaria.

a) Vagones de un tren.b) _________________c) _________________d) _________________e) _________________

Ejercicio 2.4

Represente gráficamente utilizando la estructura de las listas los vagones de un tren, por ejemplo vagón1, vagón2, vagón3,…., vagón n.., ubique el nodo inicial, los nodos siguientes, el nodo final y el enlace correspondiente.

2.4. Clasificación de las listas enlazadas.

Dependiendo de los datos que se desea representar y forma en la que se va a interactuar se pueden utilizar diferentes tipos. Es necesario revisar el texto base.

Revise el apartado 18.2. Clasificación de las listas del texto base.

Es importante tener claro las cuatro categorías que se pueden implementar las listas enlazadas. A continuación se indican gráficamente estas categorías

• Listasimplementeenlazadas

• Listadoblementeenlazadas

Page 32: Guía Estructura de Datos

Guía didáctica: Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja32

Primer bimestre

• Listacircularsimplementeenlazada

• Listacirculardoblementeenlazada

Finalizado el presente apartado se plantean ejercicios que permiten afianzar los conocimientos, por lo que deberá realizar el respectivo análisis y desarrollo basándose en los contenidos anteriormente tratados.

Ejercicio 2.4

Mencione una descripción y características de cada una de las categorías de las cuatro listas enlazadas.

¿Cómo le fue en el desarrollo del ejercicio anterior?, esperemos que muy bien, sin embargo si tiene alguna dificultad en realizar el mismo le invitamos para que pueda contactarnos a través de correo electrónico, EVA, u otro medio de comunicación, recuerde también apoyarse de la bibliografía complementaria que Ud. crea conveniente.

Si recordamos un poco las estructuras de datos estática, habíamos hablado de operaciones que se realizaban sobre las mismas, ahora con el uso de listas vamos a revisar que operaciones podemos realizar sobre las mismas.

2.5. Operaciones con listas enlazadas.

Al igual que cuando revisamos la temática de arreglos cuando trabajamos con listas enlazadas podemos realizar muchas operaciones, dentro de las cuales se destaca la creación, eliminación, lectura, inserción, actualización, entre otras, revisaremos conjuntamente con el texto básico algunas de ellas.

Revise el apartado 18.3. Operaciones en listas enlazadas del texto base.

Declaración de un nodo

En los capítulos anteriores tanto de la guía didáctica como del texto básico revisamos como declarar un nodo ya que es lo primordial cuando se trabaja con listas y se realiza operaciones sobre las mismas, recordemos dicha declaración con la cual empezamos el estudio de las operaciones en listas enlazadas, revisemos la siguiente declaración.

Page 33: Guía Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 33

Guía didáctica: Estructura de DatosPrimer bimestre

classNodo{string valor;structNodo*enlace;

}El poseer una declaración class, permitirá agrupar el tipo de dato y el apuntador o enlace al siguiente nodo. En el texto básico encontrará una declaración similar y algunas adicionales para empezar a operar sobre listas enlazadas.

Recuerde que en una lista enlazada siempre vamos a encontrar y definir dos nodos los cuales son cabecera y cola.

Pasos para construir Algoritmos que permitan trabajar con listas.

Para poder crear algoritmos que permitan insertar nodos al inicio, medio, final y realizar la lectura de los nodos es primordial conocer como construir una lista que contenga los nodos principales como son cabecera y cola, por tanto les sugiero revisar los pasos que se requieren para construir e inicializar una lista con elementos, los pasos son:

1) Declarar el tipo de dato y puntero de cabeza.

2) Asignarmemoriaparaunelementodeltipodefinidoenelptr_nuevo.

3) Crear iterativamente el primer elemento (cabeza) y los elementos sucesivos de una lista enlazada.

4) Repetir hasta que no haya mas entradas para el elemento.

En el Anexo 3 y 4 se propone un ejemplo de la creacion y lectura de las listas enlazadas, en base a éste puede realizar las demás operaciones que se pueden llevar a cabo con punteros, le recomiendo en base a la revisión del texto básico desarrollar los ejercicios de listas enlazadas y si tiene algún inconveniente no dude en ponerse en contacto con sus profesores / tutores.

En el Anexo 6 y 7 encontrará código de ejemplos de listas enlazadas, por favor an-alice y codifique los mismos.

Esperamos haya captado las ideas principales en lo relacionado a las listas enlazadas, este será el punto de partida para poder entender y comprender las listas doblemente enlazadas que son parte fundamental en las estructuras de datos dinámicas.

Listas Doblemente Enlazadas

Como hemos evolucionado en el estudio de las listas enlazadas y una vez conocida su estructura, definición y uso, podemos empezar con el estudio de las listas doblemente enlazadas, sin embargo debemos empezar identificando las semejanzas y diferencias entre simplemente y doblemente enlazadas, le invito a revisar el texto básico y la complementaria necesaria para luego desarrollar los siguientes ejercicios de parte teórica.

Page 34: Guía Estructura de Datos

Guía didáctica: Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja34

Primer bimestre

Finalizado el presente apartado se plantean ejercicios que permiten afianzar los conocimientos, por lo que deberá realizar el respectivo análisis y desarrollo basándose en los contenidos anteriormente tratados.

Ejercicio 2.5

Mencione una descripción y características de cada una de las categorías de las cuatro

En el siguiente cuadro ubique cuales son las diferencias y semejanzas entre listas enlazadas y listas doblemente enlazadas, tome en cuenta también la forma de declaración, uso, lectura, etc.

DIFERENCIAS SEMEJANZASLISTAS ENLAZADAS

DIFERENCIAS SEMEJANZASLISTAS DOBLEMENTE ENLAZADAS

Ejercicio 2.6

En la siguiente representación gráfica identifique los elementos que componen una lista doblemente enlazada.

Luego de haber realizado los ejercicios anteriores podemos empezar a estudiar los temas teóricos y prácticos que se plantean en el texto básico y también en la complementaria acerca de las listas doblemente enlazadas, tal como lo habiamos hecho con las listas enlazadas en el Anexo 5 se propone un ejemplo de declaración y lectura de listas doblemente enlazadas, con las cuales ya podemos empezar a revisar las operaciones que se pueden realizar con las mismas.

En el Anexo 8 encontrará ejemplos con código fuente de listas doblemente enlaza-das, le sugerimos revisarlos.

Muy bien estimados estudiantes, esperamos que en la presente unidad la temática estudiada y analizada haya sido de provecho para fortalecer y aumentar su conocimiento de las estructuras de datos, ahora les invitamos a desarrollar la siguiente autoevaluación, la misma que permitirá conocer los vacíos que aun podrían existir y que deberá revisarlos con más profundidad y concentración; si existiese alguna duda o comentario contacte con sus profesores / tutores a través del EVA, correo electrónico, línea telefónica.

Page 35: Guía Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 35

Guía didáctica: Estructura de DatosPrimer bimestre

Autoevaluación 2

1. EscribaunaVsiconsideraquelaafirmaciónesVERDADERAounaFsilaconsideraFALSA.

1. Una lista enlazada consta de un número de elementos y cada elemento tiene dos componentes (campos), un puntero al siguiente elemento de la lista y un valor, que puede ser de cualquier tipo.

( )

1. En las listas doblemente enlazadas, cada nodo tiene dos enlaces, uno a su nodo predecesor y el otro a su nodo sucesor.

( )

2. Los punteros permiten un uso más eficiente de la memoria. ( )

3. El recorrido de una lista enlazada significa pasar solo por el nodo inicial y final de la lista.

( )

4. Las listas son consideradas estructuras de datos estáticas. ( )

5. Las listas enlazadas están dispuestos uno a continuación de otro conectadas a través de un puntero.

( )

6. Las listas doblemente enlazadas contienen tres enlaces, uno que parte desde el nodo cabeza al siguiente nodo y otro que parte del nodo cabeza al anterior nodo.

( )

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

8. El primer nodo de una lista enlazada se conoce como puntero cola. ( )

9. Una lista doblemente enlazada es una lista en la que cada nodo tiene un puntero a su sucesor y otro a su predecesor.

( )

RESUELVA LA SIGUIENTE PARTE PRÁCTICA

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

1 2 3 4 10

2) Sobre la lista creada en el punto 1, indique la función qu permite encontrar el dato del nodo 5.

Ir a solucionario

Page 36: Guía Estructura de Datos
Page 37: Guía Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 37

Guía didáctica: Estructura de DatosSegundo bimeStre

SEGUNDO BIMESTRE

7.2. Planificación para el trabajo del alumno

COMPETENCIAS ESPECÍFICAS

OBJETIVOS DE APRENDIZAJE

CONTENIDOS CRONOGRAMA ORIENTATIVO ACTIVIDADES DE

APRENDIZAJEUnidades/Temas Tiempo estimado

Analizar las necesidades de conocimiento necesarias para resolver un problema.

Comprender, analizar y resolver problemas aplicando los métodos de la ciencia y la ingeniería.

Aplicar la lógica matemática en el contexto de las Ciencias de la Computación, con proyección, al diseño de circuitos, programación, análisis y desarrollo de algoritmos.

Diseño e Implementación de programas de aplicación.

Diagnóstico y solución de problemas en software.

• Identificalostiposde árboles de forma concºeptual y gráfica.

• Reconocelosmétodospara recorrer un árbol binario.

• Proponeunaformade representación estructurada para los árboles binarios

• Proponesolucionesacordes a la necesidad a través de los árboles binarios.

UNIDAD 3:3.1. Árboles.

3.2. Terminología.

3.3. Aplicaciones de los árboles.

3.4. Árbolesbinarios.

3.5. Recorridos en arboles binarios.

3.6. Autoevaluación 3.

Semana 1 y 2

12 horas de autoestudio

8 horas de interacción con el EVA y tutorías

Lecturadelcapítulo20(Árboles)del texto básico tal como se indica en la guía didáctica complementado con las actividades de la unidad 3 de la guía didáctica.

Desarrollo de la autoevaluación que se indica en la guía didactica.

Realizar la interacción en el EVA y resolviendo los ejercicios prácticos que se plantean

• Proponesolucionesinformáticas para el almacenamiento de información.

• Identificaeltipodeaccesoque se debe realizar en un determinado archivo.

• Reconoceeltipodearchivo del que se tiene que extraer los datos

UNIDAD 4:4.1. Formas de acceso.

4.2. Flujos.

4.3. Tipo de dato FILE.

4.4. Abrir un archivo.

4.5. Escribir datos.

4.6. Lectura de datos.

4.7. Cerrar el archivo.

4.8. Autoevaluación 4

Semana 3 y 4

12 horas de autoestudio

8 horas de interacción con el EVA y tutorías

Lectura del capítulo 15(Entradas y salidas por archivos) del texto básico tal como se indica en la guía didáctica complementado con las actividades de la unidad 4 de la guía didáctica.

Desarrollo de la autoevaluación que se indica en la guía didactica.

Realizar la interacción en el EVA y resolviendo los ejercicios prácticos que se plantean

• Identificayrepresentadatos en grafos.

• Recnoceeltipodegrafoy sus formas de lectura (recorrido)

• Realizaoperacionesparaextarer la información de los grafos.

UNIDAD 5:5.1Componentes de un

grafo.

5.2 Definiciones.

5.3 Representación

5.4 Autoevaluación 5

Semana 5 y 6

12 horas de autoestudio

8 horas de interacción con el EVA y tutorías

Estudio autónomo de la quinta unidad.

Lectura analítica.

Desarrollo de actividades recomendadas en el texto básico y en la guía didáctica.

Interacción en el EVA.

Finalizar con el desarrollo de la evaluación a distancia.

COMPETENCIAS ESPECÍFICAS

OBJETIVOS DE APRENDIZAJE

CONTENIDOS CRONOGRAMA ORIENTATIVO ACTIVIDADES DE

APRENDIZAJEUnidades/Temas Tiempo estimado

UNIDADES DE LA 3 A LA 5

Semana 7 y 8

12 horas de autoestudio

8 horas de interacción con el EVA y tutorías

Preparación para evaluación presencial del segundo bimestre.

Page 38: Guía Estructura de Datos

Guía didáctica: Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja38

Segundo bimeStre

7.4. Orientaciones específicas para el aprendizaje por competencias

Unidad 3: ESTRUCTURAS dE dATOS NO LINEALES, ÁRBOLES

Recursos educativos multimedia

Recursos educativos multimedia

En la unidad anterior estudiamos las estructuras de datos dinámicas, particularmente las listas enlazadas y tal como nos pudimos dar cuenta tienen algunas ventajas: en primer lugar se pueden crear nodos en tiempo de ejecución; es decir, conforme se necesite almacenar mas información se van creando dichos elementos; y por otra parte esta es una estructura lineal puesto que existe un solo camino para recorrer sus elementos desde el principio hasta el último elemento.

En la presente unidad el tema central de estudio son los árboles, los cuales también son estructuras dinámicas puesto que se crean mediante punteros, pero a diferencia de las listas enlazadas estas estructuras son de tipo jerárquico, lo cual quiere decir que la información está organizada en varios niveles y como podremos ver más adelante existen muchos caminos para recorrer la estructura desde el primer elemento o raíz hasta los elementos de los niveles más avanzados.

Para el estudio de esta unidad estaremos ayudandonos del texto base concretamente del capítulo 20.

3.1. Árboles.

Entender las estructuras de datos puede ser tan simple si lo miramos desde un punto de vista muy objetivo, relacionemos pues los árboles de nuestro medio ambiente con estas estructuras de datos.

Un árbol implica una estructura en la cual los datos se organizan de modo que los elementos de información están relacionados entre sí a través de ramas. El árbol genealógico es el ejemplo típico más representativo del concepto de árbol general.

Page 39: Guía Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 39

Guía didáctica: Estructura de DatosSegundo bimeStre

Un árbol consta de un conjunto finito de elementos, denominados nodos y un conjunto finito de líneas dirigidas, denominadas ramas, que conectan los nodos. El número de ramas asociado con un nodo es el grado del nodo. Si un árbol no está vacío, entonces el primer nodo se llama raíz.

Revise el apartado 20.1. Árboles generales del texto base.

Como se podrá dar cuenta el estudio de los árboles es muy simple puesto que ésta estructura está muy relacionado con objetos de nuestro entorno físico, a continuación estudiemos los términos que definen las diferentes características de un árbol.

3.2. Terminología.

La representación básica del árbol requiere que se utilice la terminología apropiada, por lo que lo invito a revisar el tema en el texto básico.

Revise el apartado 20.1.1. Terminología básica del texto base.

En la figura 3.1, se realiza una representación gráfica de un árbol en la que se destacan sus atributos.

Figura 3.1 Terminología de árboles

En base a la figura 3.1 revisemos que componentes del árbol corresponden a cada uno de los términos definidos:

Padres:

Hijos:

Descendientes de A:

Ascendientes de C:

Hermanos:

Hojas:

Profundidad:

A, B, F

B, E, F, C, D, G, H, I

B, C, D

B, A

{B, E, F}, {C, D}, {G, F, I}

C, D, E, G, H, I

3

BCD, E, FGHI

Page 40: Guía Estructura de Datos

Guía didáctica: Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja40

Segundo bimeStre

Los árboles pueden representarse de varias maneras, aunque la forma más común es mediante grafos, tal como se muestra en la figura 3.2.

Figura 3.2 Representación gráfica de un árbolContinuando con el estudio de los árboles vamos a desarrollar el siguiente ejercicio, es importante que los conceptos queden claros los cuales son la base para comprender los conceptos posteriores.

Finalizado el presente apartado se plantea un ejercicio que permiten afianzar los conocimientos, por lo que deberá realizar el respectivo análisis y desarrollo basándose en los contenidos anteriormente tratados.

Ejercicio 3.1

Consulte en el texto básico base o en cualquier fuente los conceptos relacionados con árboles que se indican a continuación:

Nodoraíz: ....................................................................................................................

Nodopadre: ....................................................................................................................

Nodohijo ....................................................................................................................

Nodosdescendientes ....................................................................................................................

Nodosascendientes ....................................................................................................................

Nodoshermanos ....................................................................................................................

Nodohojas ....................................................................................................................

Nodointerno ....................................................................................................................

Nodonoterminal ....................................................................................................................

Nivel ....................................................................................................................

Arcos ....................................................................................................................

Ramas ....................................................................................................................

Camino ....................................................................................................................

Altura ....................................................................................................................

Page 41: Guía Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 41

Guía didáctica: Estructura de DatosSegundo bimeStre

Subárbol ....................................................................................................................

Árbolequilibrado ....................................................................................................................

Muy bien, ¿Le resultó interesante el ejercicio propuesto?, seguro que si ya que en él se pueden ubicar algunos conceptos que son básicos para el presente estudio, ahora que hemos revisado la parte teórica de los árboles es importante ver la importancia y aplicabilidad de los mismos, revisemos esta temática a continuación.

3.3. Aplicaciones de los árboles.

Pensemos que las Estructuras de Datos existen para solucionar problemas de nuestro entorno, caso contrario no tendrá razón su estudio y aplicación en nuestros programas, revisemos las aplicaciones que tienen este tipo de estructuras las mismas que se pueden utilizar para:

• Representarfórmulasmatemáticas.• Organizaradecuadamentelainformación.• Registrarlahistoriadeuncampeonatodetenis.• Construirunárbolgenealógico.• Análisisdecircuitoseléctricos.

Como parte de su estudio, le invitamos a desarrollar el siguiente ejercicio que está ligado a las aplicaciones de árboles.

Finalizado el presente apartado se plantea ejercicio que permiten afianzar los conocimientos, por lo que deberá realizar el respectivo análisis y desarrollo basándose en los contenidos anteriormente tratados.Finalizado el presente apartado se plantean ejercicios que permiten afianzar los conocimientos, por lo que deberá realizar el respectivo análisis y desarrollo basándose en los contenidos anteriormente tratados.

Ejercicio 3.2

Investigue por lo menos 5 aplicaciones adicionales de los árboles.

..................................................................................................................................................

..................................................................................................................................................

..................................................................................................................................................

..................................................................................................................................................

..................................................................................................................................................Esperamos esté comprendiendo la parte teórica de árboles ahora antes de empezar a codificar un árbol al igual que las demás estructuras de datos es necesario conocer su representación, le invitamos a revisar la forma de representar un árbol.

3.4. Árboles binarios.

En este tipo de árbol ningún nodo puede tener más de dos subárboles, es decir cada nodo puede tener cero, uno o dos hijos (subárboles).

Page 42: Guía Estructura de Datos

Guía didáctica: Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja42

Segundo bimeStre

Es momento de revisar el apartado 20.2. Árboles binarios del texto base.

Se conoce el nodo de la izquierda como hijo izquierdo y el nodo de la derecha como hijo derecho.

5

3 8

2 4 7 8

Figura 3.3 Representación gráfica de un árbol binario

Un árbol binario es una estructura recursiva, cada nodo es la raíz de su propio subárbol y tiene hijos, que son raíces de árboles llamados subárboles derecho e izquierdo del nodo, respectivamente.

Es momento de revisar el apartado 20.2. Árboles binarios del texto base.

Como puede ver un árbol binario tiene ciertas restricciones (máximo dos subárboles) los cual lo hace más práctico a la hora de programar esta estructura y una de las tareas principales cuando desarrollamos aplicaciones con este tipo de árbol es el recorrido, el mismo que lo estudiaremos a continuación.

3.5. Recorridos en árboles binarios.

Una de las tareas básicas que se realiza en un árbol binario es el recorrido lo cual significa visitar los nodos del árbol en forma sistemática. Un recorrido de un árbol binario, requiere que cada nodo del árbol sea procesado (visitado) una vez y sólo una en una secuencia determinada.

Es momento de revisar el apartado 20.6. Recorrido de un árbol del texto base.

Existen tres formas diferentes de efectuar el recorrido y todas ellas de naturaleza recursiva, éstas son:

• RecorridoPreorden(NID)

- Visitarlaraíz(N).- Recorrer el subárbol izquierdo (I).- Recorrer el subárbol derecho (D).

• RecorridoEnorden(IND)

- Recorrer el subárbol izquierdo (I).- Visitarlaraíz(N).- Recorrer el subárbol derecho (D).

Page 43: Guía Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 43

Guía didáctica: Estructura de DatosSegundo bimeStre

• RecorridoPostorden(IDN)

- Recorrer el subárbol izquierdo (I).- Recorrer el subárbol derecho (D).- Visitarlaraíz(N).

A continuación se presenta los tres recorridos mencionados anteriormente para el árbol mostrado en la figura: 3.4

Figura 3.4ÁrbolBinario.

Preorden: L,D,B,H,G,J,Q,X,T,S,W,YEnorden: B,D,G,H,J,L,Q,S,T,W,X,YPostorden: B,G,J,H,D,S,W,T,Y,X,Q,L

Una vez que podemos identificar, representar y recorrer un árbol binario, procedamos a revisar algunas operaciones que se pueden llevar a cabo en árboles.

3.6. Árboles binarios de búsqueda.

Recuerde, los árboles binarios de búsqueda son muy utilizados, y son la base para nuevas estructurascomolosÁrbolesbinariosequilibrados(AVL),laprincipalcaracterísticaessufacilidad en cuanto a los algoritmos para trabajar con la información almacenada.

Gracias a las características de los árboles binarios se puede extender su funcionalidad; a continuación revisaremos el árbol binario de búsqueda el mismo que consiste en una estructura sobre la cual se puede realizar eficientemente las operaciones de búsqueda, inserción y eliminación.

Formalmente se define un árbol binario de búsqueda de la siguiente manera:

“Para todo nodo T del árbol debe cumplirse que todos los valores de los nodos del subárbol izquierdo de T deben ser menores o iguales al valor del nodo T.” De forma similar, todos los valores de los nodos del subárbol derecho de T deben ser mayores o iguales al valor del nodo T.

Un árbol binario de búsqueda se construye en base a una lista de números dados (claves), en el cual el primer número de dicha lista será la raíz del árbol, y los siguientes valores se ubican de acuerdo al criterio antes indicado.

Page 44: Guía Estructura de Datos

Guía didáctica: Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja44

Segundo bimeStre

A continuación vamos a crear un árbol binario de búsqueda para la siguiente lista de números: 65, 75, 30, 4, 41, 85.

65

30 75

4 41 85

Figura 3.5ÁrbolBinario.Hemos concluido el estudio de esta unidad, como se podrá dar cuenta este tipo de estructuras son muy importantes, debido a sus características particulares, principalmente la organización jerárquica. Para evaluar el avance que va adquiriendo sírvase responder la siguiente autoevaluación.

Autoevaluación 3

1. EscribaunaVsiconsideraquelaafirmaciónesVERDADERAounaFsilaconsideraFALSA.

1 Los punteros hacen un uso más eficiente de la memoria. ( )

2 Un árbol consta de un conjunto finito de elementos llamados nodos. ( )

3 El nivel de un nodo es la longitud del camino que lo conecta al nodo raíz. ( )

4 Un árbol binario puede tener más de dos subárboles. ( )

5 El recorrido de un árbol supone visitar cada nodo sólo una vez. ( )

6El recorrido postorden procesa primero el subárbol izquierdo, después la raíz y a continuación el subárbol derecho.

( )

7Al trabajar con punteros: ¿Se puede declarar variables puntero que apunten a cualquier tipo de dato, incluso a otros punteros?.

( )

8 El operador & devuelve la dirección de la variable a la cual se aplica. ( )

9 Los árboles sirven para organizar adecuadamente la información. ( )

10Todo nodo que no es raíz, ni terminal u hoja se conoce con el nombre de interior.

( )

RESUELVA LA SIGUIENTE PARTE PRÁCTICA

2. Dado el siguiente árbol.

Indique lo siguiente:Padres:HijosHojasHermanosProfundidad

Page 45: Guía Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 45

Guía didáctica: Estructura de DatosSegundo bimeStre

3. Construir un árbol binario de búsqueda con los siguientes datos: 50, 25, 75, 10, 40, 60, 90, 35, 45, 70, 42.

4. Del árbol binario de búsqueda del ejercicio anterior, realice lo siguiente:

Recorrido Preorden:

Recorrido Enorden:

Recorrido Postorden:

Ir a solucionario

Page 46: Guía Estructura de Datos

Guía didáctica: Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja46

Segundo bimeStre

Unidad 4: ARCHIVOS

Hasta ahora hemos estudiado las estructuras de datos tanto estáticas (arreglos) como dinámicas (Listas, árboles) las cuales son de mucha utilidad en el desarrollo de aplicaciones; pero por otra parte pensemos que las aplicaciones procesan y posteriormente guardan y/o recuperan información, para lo cual se debe utilizar otras técnicas de almacenamiento permanente como son los archivos.

Para la presente unidad es necesario revisar el capítulo 15 Entradas y salidas por archivos, del texto base

Tal como lo he comentado anteriormente, para la buena comprensión de los diferentes temas es importante en primera instancia tener claro que los aspectos técnicos de las diferentes estructuras tienen como base el comportamiento real de ciertos objetos de nuestro entorno, en función de esto revisemos a continuación las formas de acceso a un archivo.

4.1. Formas de acceso.

El acceso a la información en un archivo se lo puede realizar de 2 maneras:

• AccesoSecuencial.

Recordemos como se hacía para acceder a un tema musical en los clásicos casettes de audio, se tenía que adelantar o retroceder la cinta hasta encontrar el tema en cuestión, a este lo llamamos acceso secuencial puesto que implica recorrer todos los temas anteriores o posteriores de forma similar, cuando el acceso a la información (registros) de un archivo es secuencial es necesario recorrer o visitar todos los registros precedentes.

• AccesoDirecto.

De la misma forma pensemos como se accede a un tema musical en un clásico disco de acetato o inclusive un CD de música actual, pues es muy simple se accede directamente al tema requerido, apliquemos el mismo criterio para leer los registros de un archivo de acceso secuencial.

Tal como se comentó anteriormente las aplicaciones o sistemas informáticos, desde el más pequeño hasta la más grande base de datos necesita guardar la información en dispositivos externos de almacenamiento permanente, tales como: CD, DVD, Flash Memory, Disco Duro, etc. la información se almacena en archivos (ficheros), cuyos datos están almacenados de tal forma que facilite el acceso a los mismos y adicionalmente se realicen las acciones normales como son: leer, escribir, modificar y eliminar información.

En forma general un archivo es una forma o medio que disponen los sistemas operativos para guardar información en una sola unidad lógica de almacenamiento.

Finalizado el presente apartado se plantean ejercicios que permiten afianzar los conocimientos, por lo que deberá realizar el respectivo análisis y desarrollo basándose en los contenidos anteriormente tratados.

Page 47: Guía Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 47

Guía didáctica: Estructura de DatosSegundo bimeStre

Ejercicio 4.1

Describa al menos 5 aplicaciones en las cuales se pueda utilizar Archivos para almacenar información:……………………………………………………………………………………………………….……………………………………………………………………………………………………….……………………………………………………………………………………………………….……………………………………………………………………………………………………….……………………………………………………………………………………………………….……………………………………………………………………………………………………….

Revisemos a continuación los aspectos teóricos relacionados con el movimiento o flujo de información desde y hacia los archivos.

4.2. Flujos.

El procesamiento de archivo en lenguaje C se lo hace mediante el concepto de Flujo el cual es un concepto que se refiere al movimiento o corriente de información desde un origen hasta un destino, en nuestro caso desde la aplicación hasta un fichero, pero este concepto se lo utiliza en otros ámbitos de las aplicaciones en C, por ejemplo cuando desarrollamos un programa, automáticamente se crean dos flujos: el primero que se refiere al envío de información desde la aplicación hasta la pantalla (stdout para presentar datos) y un segundo flujo para enviar datos desde el teclado hasta la aplicación (stdin).

Cuando empezamos a desarrollar aplicaciones en una nueva estructura, es necesario tener en cuenta lo siguiente: en primer lugar se debe entender todos los conceptos o parte teórica de la misma, pero adicional a ello es necesario saber que nunca se empieza a trabajar desde cero o desde lo más básico; los lenguajes de programación ya tienen definidos ciertos tipos de datos o estructuras que nos servirán de base para nuestro desarrollo, en este caso el lenguaje C ya tiene definido el tipo de dato FILE el mismo que lo estudiaremos a continuación.

Es necesario revisar el apartado 15.1. Flujos, del texto base, en el que se especifican la forma en que el lenguaje C estructura los flujos

Puede utilizar algún otro recurso que ayude a afianzar los conocimientos.

4.3. Tipo de datos FILE.

Si bien es cierto a nivel de sistema operativo cada archivo tiene su propio nombre, por ejemplo: “leeme.txt”, “datos.txt”, ”info.dat”, etc. pero a nivel de lenguaje C la forma de acceder a un fichero debe ser mas técnica, en este caso utilizaremos un puntero o en otras palabras la dirección en la cual se encuentra ubicado el archivo que vamos a procesar, adicionalmente veamos que para almacenar la información técnica del archivo que estamos procesando es necesario disponer de una estructura (FILE) en cuyos campos se almacenen las características del fichero, pues esta estructura FILE ya está definida y por lo tanto para referirnos a un fichero desde una aplicación C debemos declarar un puntero a esta estructura, se puede utilizar la siguiente nomenclatura:

FILE *F;

Page 48: Guía Estructura de Datos

Guía didáctica: Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja48

Segundo bimeStre

Como nos podemos dar cuenta, la variable “f” es la referencia al fichero que utilizaremos en nuestra aplicación, y la misma es un puntero a la estructura antes mencionada.

Es necesario revisar el apartado 15.2. Puntero FILE, del texto base, en el que se la definición de archivo FILE a partir de una estructura de datos.

A continuación revisemos las tareas típicas de procesamiento que se realiza sobre un archivo las que destacan: abrir, leer datos, escribir y cerrar el archivo.

4.4. Abrir un archivo.

El proceso de apertura de un archivo es muy simple, únicamente se hace un llamado a la función correspondiente y esta devuelve la referencia del archivo abierto:

f=fopen(ruta_y_nombre_del_archivo,modo);

Es necesario revisar el apartado 15.3. Apertura de una archivo, del texto base, en el que se especifica la sintaxis y ejemplos a la hora de abrir un archivo

Si el archivo se encuentra en una subcarpeta, recuerde que debe utilizar “\\” en vez de “\” para especificar dicha ruta, mientras que en el parámetro modo debe indicar precisamente el modo en que será abierto el archivo (en la sección 15.3.1 del texto básico se encuentran especificados estos parámetros). Esta funciónpuederetornarunvalorNULLsiexistióunerroralintentarabrirelarchivo.

Es importante aclarar que en la presente asignatura pondremos especial interés con en los archivos cuyo modo de apertura es de tipo “texto”.

4.5. Escribir datos.

Si al momento de abrir el archivo en el parámetro modo especificamos el modo de escritura “w” y la apertura y/o creación fue correcta, ya podemos ejecutar los procesos correspondientes

putc(c, f );fputc(c, f );

En estas funciones a más de requerir la referencia del archivo en el cual escribirán los datos, también se debe especificar el dato que será escrito.

A continuación apliquemos los conceptos estudiados, empecemos con la codificación de un pequeño programa para escribir o grabar datos en el archivo, recuerde que si necesita ayuda puede contactar con sus tutores, suerte.

Ejercicio 4.2

Desarrolle un programa que registre una lista de 20 números en un archivo de tipo texto:

Page 49: Guía Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 49

Guía didáctica: Estructura de DatosSegundo bimeStre

Una vez desarrollado este ejercicio de escritura de datos vamos a continuar con el proceso inverso, es decir leer datos; le invito a revisar el siguiente tema.

4.6. Leer datos.

Una vez que el archivo ha sido abierto de forma exitosa se procede a leer la información almacenada en el mismo, para lo cual normalmente se utiliza un ciclo while para recorrer y extraer los datos almacenados en el fichero, este proceso repetitivo finaliza cuando la función de lectura de datos encuentra el indicador de fin de archivo (EOF). Estas funciones de lectura de datos se encuentran especificadas en la sección 15.4 del texto básico:

c = getc(f );c = fgetc(f );

Como es de imaginar estas funciones requieren como parámetro la referencia del fichero que será leído, y obviamente que haya sido previamente abierto.

Finalizado el presente apartado se plantea el siguiente ejercicio que permiten afianzar los conocimientos, por lo que deberá realizar el respectivo análisis y desarrollo basándose en los contenidos anteriormente tratados.

Ejercicio 4.3

Desarrolle un programa que lea los datos registrados en el ejercicio 4.2.

4.7. Cerrar el archivo.

Luego de efectuar las actualizaciones en el archivo, ya sean lectura o escritura de datos se debe ejecutar el cierre del archivo; por otra parte veamos que si bien es cierto cuando termina la ejecución del programa el archivo se cierra automáticamente, es necesario cerrar explícitamente el fichero para evitar posibles inconsistencias en la información guardada, pues al cerrar el archivo se obliga a guardar datos que posiblemente no estén aun registrados y se encuentren en buffer de memoria intermedio.

fclose(f );

Tal como lo comente anteriormente el proceso de cierre es muy simple y como se podrá dar cuenta únicamente recibe como parámetro la variable de tipo FILE correspondiente al archivo que se desea cerrar.

Es hora de verificar el avance relacionado con archivos, para lo cual lo invitamos a trabajar en la siguiente autoevaluación.

Page 50: Guía Estructura de Datos

Guía didáctica: Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja50

Segundo bimeStre

Autoevaluación 4

1. EscribaunaVsiconsideraquelaafirmaciónesVERDADERAounaFsilaconsideraFALSA.

1La estructura FILE contiene información sobre el archivo tal como la dirección del Buffer que utiliza.

( )

2 El acceso a los archivos se hace con un Buffer intermedio (en lenguaje C). ( )

3 Un stream se refiere al flujo de datos entre una fuente y un destino. ( )

4La apertura del archivo se refiere a conectar el archivo externo con el programa.

( )

5 Al momento de abrir el archivo se debe especificar el modo de apertura. ( )

6 La estructura FILE está declarada en la librería stdio.h. ( )

7El cierre de un archivo debe realizarse con la finalidad de evitar que el archivo que de incompleto.

( )

8Los archivos se guardan en dispositivos externos tal como flash memory, cd, dvd, etc.

( )

9La apertura de un archivo debe realizarse de la siguiente manera:

FILE *pf;pf=fopen(nombre_archivo,modo,FILE)

( )

10Al abrir el archivo debe especificarse si este será tratado de forma binaria o como cadena de caracteres.

( )

2. Realice un programa en C para crear en disco un archivo de texto.

3. Realice un programa en C para leer un archivo de texto desde el disco.

Ir a solucionario

Page 51: Guía Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 51

Guía didáctica: Estructura de DatosSegundo bimeStre

Unidad 5: GRAFOS

Recursos educativos multimedia

En el área de la informática existen muchos conceptos que si bien es cierto se definen mediante herramientas o estructuras de datos permiten modelar implícitamente conceptos computacionales en nuestra mente cada día, un caso particular de esto son los Grafos, pensemos que cuando queremos movilizarnos de una ciudad a otra en nuestro vehículo, normalmente empezamos trazando una ruta o definimos algunas ciudades por las cuales pasaremos o también seleccionamos de entre varias alternativas la mejor ruta; por otra parte pensemos también en las compañías aéreas internacionales normalmente hacen sus itinerarios teniendo en cuenta algunas ciudades en las cuales se hará escala; visto desde el punto de vista informático lo que estamos trazando es un grafo y tal como lo hemos visto tiene una gran cantidad de aplicaciones en áreas como: geografía, ingenierías, en el campo industrial, sistemas de información geográfica, en las compañías de distribución de productos, etc.

Consecuentemente en el contexto informático esta estructura tiene un amplio rango de aplicaciones, así por ejemplo en el modelado de cambio estados de un sistema, etc, es por ello que le proponemos el siguiente ejercicio que tiene relación con los grafos y sus aplicaciones.

Varios autores realizan la siguiente definición: “Un grafo, G, es un par, compuesto por dos conjuntos V y A. Al conjunto V se le llama conjunto de vértices o nodos del grafo. A es un conjunto de pares de vértices, estos pares se conocen habitualmente con el nombre de arcos o ejes del grafo”. Se suele utilizar la notación G = (V, A) para identificar un grafo.

Desarrolle el ejercicio que a continuación se indica, esto le permitirá afianzar sus conocimientos en los temas tratados.

Ejercicio 5.1

Describa 5 ejemplos en los cuales se puede utilizar los grafos como estructuras de datos:

………………………………………………..………….…………………………………………….…………………………………………………..……….…………………………………………….……………………………………………………..…….…………………………………………….………………………………………………………...……………………………………………….…………………………………………………………...…………………………………………….

Tal como le hemos hecho en las unidades anteriores empecemos revisando los fundamentos teóricos de esta estructura, y al igual que todos los temas antes estudiados, la terminología es importante para la comprensión del tipo de datos propiamente dicho.

Page 52: Guía Estructura de Datos

Guía didáctica: Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja52

Segundo bimeStre

5.1. Componentes de un grafo.

Desde el punto de vista más formal, un grafo está constituido básicamente por dos elementos:

• Vérticesonodos,loscualessonlospuntosoaristasqueconformanelgrafo.

• Arcosolíneasqueunenlosvértices.Adicionalmente a los componentes existen otros términos más específicos es decir en algunos casos son conceptos que se aplican a determinados grafos dependiendo de su naturaleza o contenido y tipo de información que proporcionan. Los grafos pueden ser dirigidos o no dirigidos, tal como se indica en la figura 5,1 y 5.2.

Figura 5.1: Grafo no dirigido Figura 5.2: Grafo dirigido

Finalizado el presente apartado se plantea un ejercicio que permiten afianzar los conocimientos, por lo que deberá realizar el respectivo análisis y desarrollo basándose en los contenidos anteriormente tratados.

Ejercicio 5.2

Dado el siguiente conjunto de Vértices y aristas, represente gráficamente los respectivos grafos (identifique si es un grafo dirigido o no dirigido:

G1 = (V1, A1)V1 = {1, 2, 3, 4} A1 = {(1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)}

G2 = (V2, A2)V2 = {1, 2, 3, 4, 5, 6} A2 = {(1, 2), (1, 3), (2, 4), (2, 5), (3, 6)}

G3 = (V3, A3)V3 = {1, 2, 3} A3 = {<1, 2>, <2, 1>, <2, 3>}

La representación gráfica de éstas tres estructuras es la siguiente:

Page 53: Guía Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 53

Guía didáctica: Estructura de DatosSegundo bimeStre

5.2. Definiciones.

A continuación revisemos las definiciones de los términos relacionados con los Grafos:

• Grafonodirigido:Gráficamenteestetipodegrafonotienedirecciónonotieneflechas,demaneraformal podríamos decir que el arco que une los dos nodos se puede representar de dos formas (n1, n2) o (n2, n1), ver Figura 5.1.

• Grafodirigido.Elejemplodelafigura5.2esunGrafodirigido,puestoquelasflechasindicanlarelación existente entre los dos nodos y por otra parte al arco (E, D) no se lo puede representar de la forma (D, E).

• Grafovalorado.Enestecasocadaunodelosarcostieneunpesoovalor.

• Grado.Eselnúmerodearcosquecontieneelnodo.

• Gradodeentrada.EnunGrafodirigidoeselnúmerodearcosquelleganalnodo.

• Gradodesalida.Eselnúmerodearcosquesalendelnodo.

• Camino:Eslasecuenciadevérticesnecesariosparaalcanzarunnododedestino.

• Longituddeuncamino:Eslacantidaddenodosincluidosenuncamino,incluyendoelprimeroyel último nodo.

La mejor manera de entender los conceptos de un grafo es aplicarlos en un modelo especifico, para lo cual sírvase desarrollar el siguiente ejercicio.

Ejercicio 5.2

Elabore un Grafo a partir de las definiciones que se realizan a continuación.

1) G1={V1, A1} V1={1, 2, 3, 4, 5} G1={<1, 2>,<1, 5>,<1, 4>,<2, 3>,<3, 5>,<4, 3>,<4,5>}

Page 54: Guía Estructura de Datos

Guía didáctica: Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja54

Segundo bimeStre

2) G2={V2, A2} V2={a, b, c, d, e, f, g} G2={(a, b), (a, c), (a, d), (a, e), (b, d), (b, e), (c, f ), (c, g), (d, e), (f, g)}

Ejercicio 5.3

Revisar los conceptos mencionados en la unidad 5.2 e identificar la representación formal o matemática de los mismos.

Una vez que hemos estudiado la parte relacionada con los conceptos, veamos cómo se almacena la información de esta estructura (la misma que es un poco irregular) para ser utilizadas en nuestras aplicaciones, veremos que se usan estructuras de datos ya conocidas por nosotros como lo son: arreglos y listas enlazadas.

5.3. Representación.

Obviamente para trabajar con la estructura Grafo en un sistema computacional este debe ser representado utilizando estructuras propias de los lenguajes de programación, en base a esto veremos que existen dos formas de representar esta estructura:

Page 55: Guía Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 55

Guía didáctica: Estructura de DatosSegundo bimeStre

Figura 5.3: Grafo

Matriz de adyacencia:

En este caso se utiliza una matriz cuadrada para representar el Grafo, en la cual tanto las filas y columnas representan los nodos del Grafo y cuando existe una relación entre dos nodos se coloca un “1”, la siguiente es la matriz de adyacencia para el Grafo de la Figura 5.3:

A B C D E↓ ↓ ↓ ↓ ↓

A =

0 1 1 0 0 ←A

1 0 0 0 0 ←B

0 0 0 0 0 ←C

0 1 1 0 0 ←D

1 0 0 0 0 ←EFigura 5.4: Matriz de adyacencia

Como hemos visto, representar un Grafo mediante la Matriz de adyacencia, utiliza la estructura de tipo matriz la misma que ya la estudiamos en el primer bimestre, apliquemos estos conocimientos en el siguiente ejercicio.

Ejercicio 5.4

Desarrolle un programa que construya la matriz de adyacencia de un Grafo; los datos deben ser ingresados desde el teclado.

Listas de adyacencia:

Se utilizan Listas enlazadas para representar el grafo, para lo cual se crea una “Lista de Directorio” misma que es una lista de todos los nodos del grafo y para representar la relación con los otros nodos se crean nuevos enlaces desde cada nodo de la “Lista de Directorio” antes mencionada, igualmente en la siguiente figura se muestra la “Lista de adyacencia” para el Grafo de la Figura 5.3.

Page 56: Guía Estructura de Datos

Guía didáctica: Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja56

Segundo bimeStre

Figura 5.5 Listas de adyacencia utilizando listas enlazadas

De la misma forma la representación mediante listas de adyacencia utiliza listas enlazadas, como ejercicio final al estudio de esta estructura sírvase realizar el programa correspondiente para el Grafo anterior y utilizando esta última forma de representación.

Muy bien estimados estudiantes hemos llegado a la finalización del estudio de la asignatura en este segundo bimestre y por ende del presente ciclo, esperamos que los conocimiento adquiridos sean los básicos y necesarios para iniciar en el desarrollo de aplicaciones pequeñas pero que tengan eficiencia y eficacia, es por ello que le invitamos a desarrollar la última autoevaluación esperando todo le salga de lo mejor. Adelante y éxitos!.

Autoevaluación 5

1. EscribaunaVsiconsideraquelaafirmaciónesVERDADERAounaFsilaconsideraFALSA.

1 Se conoce como arco a la línea que une dos nodos de un Grafo. ( )

2 Un Grafo dirigido es aquel cuyas líneas tienen una flecha es decir una dirección. ( )

3La Matriz de adyacencia se utiliza para representar Grafos únicamente cuando estos son valorados.

( )

4Se dice que un Grafo es valorado cuando los nodos tienen un numero en lugar de tener un texto o una letra.

( )

5 El término “Camino” es un concepto utilizado en Grafos. ( )

6La Longitud entre dos nodos de un Grafo es la suma de los valores que tienen los arcos que los une.

( )

7Si el Grafo es no dirigido el Grado puede clasificarse en: Grado de entrada y Grado de salida.

( )

8En un Grafo no dirigido, el arco que une los nodos A y B; se puede escribir de cualquiera de estas formas (A, B) y (B, A).

( )

9El uso de listas de adyacencia para representar Grafos hace mas óptimo el uso de memoria.

( )

10 Se puede utilizar Grafos en Ingeniería Eléctrica. ( )

Page 57: Guía Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 57

Guía didáctica: Estructura de DatosSegundo bimeStre

2. RealizarunGrafoapartirdelasdefinicionesqueserealizanacontinuación

• G1={V1,A1}V1={a,b,c,d,e,f,g} G1={<a,b>,<b,c>,<b,d>,<c,d>,<d,a>,<e,b>,<g,c>,<g,e>, <f,e>,<f,g>}

• G2={V2,A2}V2={a,b,c,d,e,f,g,h} G2={(a,b),(a,c),(b,d),(c,d),(d,e),(d,f),(e,f),(e,g),(g,f),(f,h),(g,h)}

Ir a solucionario

Page 58: Guía Estructura de Datos

Guía didáctica: Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja58

Solucionario

8. Solucionario

8.1. Autoevaluación 11. EscribaunaVsiconsideraquelaafirmaciónesVERDADERAounaFsilaconsideraFALSA.

1 F2 V3 F4 F5 V6 F7 V8 V9 V10 V

Parte A:

2. Declareunarreglodeorden“mxn”,puedesertresfilasytrescolumnas.Sedesearegistrarla siguiente matriz:

5 6 9

10 1 7

3 5 2

intdatos[3][3];

El arreglo definido es de tipo entero y consta de 3 filas y 3 columnas y su identificador es “datos”.

Estrategia:

Puede consultar el apartado 1.5 de la guía didáctica.

3. Escriba el código para presentar los elementos de la matriz creada en el punto 1.

for(i=0;i<3;i++)for(i=0;i<3;i++)

printf(”%d”,datos[i][j]);

El resultado de ejecutar este fragmento de código es:

5 6 9

10 1 7

3 5 2

Page 59: Guía Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 59

Guía didáctica: Estructura de DatosSolucionario

Estrategia:

Consulte el apartado 9.4.4 del texto base especialmente el ejercicio 9.5. “datos” es la matriz, definida en el punto 1

4. Escriba el código para obtener los elementos de la diagonal principal de la matriz declarada y páselos a un arreglo unidimensional.

intdiagonal[3];for(i=0;i<3;i++)

diagonal[i]=datos[i][j];

Estrategia:

Consulte el apartado 9.4.4 del texto base especialmente el ejercicio 9.5. “diagonal” es el arreglo unidimensional. El resultado es:

5 1 2

5. Presente gráficamente el arreglo unidimensional del punto anterior ordenado de formaascendente y forma descendente.

Orden ascendente:

1 2 5

Orden descendente:

5 2 1

Parte B:

6. Cuál es la diferencia entre un arreglo unidimensional y un arreglo bidimensional.

Arreglo unidimensional: Lista lineal de elementos

Arreglo bidimensional: Conjunto de arreglos unidimensionales

Estrategia: Revise el apartado 1.1 y 1.5 de la guía didáctica.

7. Indique una forma de inicializar un arreglo

intdatos[3][3]={5,6,9,10,1,7,3,5,2}

Estrategia: Revise el apartado 1.1 y 1.5 de la guía didáctica.

Page 60: Guía Estructura de Datos

Guía didáctica: Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja60

Solucionario

9. Escriba los pasos que sigue el algoritmo de selección.

Su funcionamiento es el siguiente:• Buscarelmínimoelementodelalista• Intercambiarloconelprimero• Buscarelmínimoenelrestodelalista• Intercambiarloconelsegundo

Yengeneral:

• Buscarelmínimoelementoentreunaposicióni y el final de la lista• Intercambiarelmínimoconelelementodelaposicióni

Estrategia: Revise el apartado 10.3 del texto base. Además en el anexo 2 se indica la codificación de la aplicación del algoritmo de ordenación por selección.

Page 61: Guía Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 61

Guía didáctica: Estructura de DatosSolucionario

8.2. Autoevaluación 21. EscribaunaVsiconsideraquelaafirmaciónesVERDADERAounaFsilaconsideraFALSA.

1 V2 V3 V4 F5 F6 V7 F8 F9 F10 V

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

Estrategia: Para resolver este ejercicio es necesario revisar el apartado 18.2 del texto base. La solución de este ejercicio está en el anexo 5 de ésta guía.

4) Sobre la lista creada en el punto 1, encuentre el dato del nodo 5.

intBuscarNodo(Nodo*Siguiente,intvalor){intencontrado=0;while(siguiente!=NULL){

if(Siguiente->Datos==valor){encontrado=1;Siguiente=NULL;

}else

Siguiente=Siguiente->Enlace;}return encontrado;

}En la codificación se presenta la función que permite buscar un elemento en la lista enlazada y al momento en que se encuentra devuelve el valor de 1, caso contrario 0.

Estrategia: Para resolver este ejercicio es necesario revisar el apartado 18.3 del texto base.

Page 62: Guía Estructura de Datos

Guía didáctica: Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja62

Solucionario

8.3. Autoevaluación 31. EscribaunaVsiconsideraquelaafirmaciónesVERDADERAounaFsilaconsideraFALSA.

1 V2 V3 V4 F5 V6 F7 V8 V9 V10 V

2. Dado el siguiente árbol.

Indique lo siguiente:Padres: F, G, H, P, O, JHijos: G,H,P,N,F,J,Q,A,O,V,SHojas: Q, A, S, F, VHermanos: {G,H},{P,N},{F,J},{Q,A}Profundidad: 5

Estrategia: Para resolver este ejercicio es necesario revisar el apartado 3.2 de la guía didáctica.

3. Construir un árbol binario de búsqueda con los siguientes datos: 50, 25, 75, 10, 40, 60, 90, 35, 45, 70, 42.

Estrategia: Para resolver este ejercicio es necesario revisar el apartado 20.2 del texto base.

Page 63: Guía Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 63

Guía didáctica: Estructura de DatosSolucionario

4. Del árbol binario de búsqueda del ejercicio anterior, realice lo siguiente:

Recorrido Preorden: 50, 25, 10, 40, 42, 75, 60, 70, 90Recorrido Enorden: 10, 25, 40, 42, 50, 60, 70, 75, 90Recorrido Postorden: 10, 42, 40, 25, 70, 60, 90, 75, 50

Estrategia: Para resolver este ejercicio es necesario revisar los recorridos que se pueden hacer en un árbol binario, que se trata en éste capítulo de la guía como en el apartado 20.6 del texto base.

Page 64: Guía Estructura de Datos

Guía didáctica: Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja64

Solucionario

8.4. Autoevaluación 43. EscribaunaVsiconsideraquelaafirmaciónesVERDADERAounaFsilaconsideraFALSA.

1 V2 V3 V4 V5 V6 V7 V8 V9 F10 V

4. Realice un programa en C para crear en disco un archivo de texto.

#include <stdio.h>#include <conio.h>int main () {

int c;FILE *pf;char *salida = “salida.txt“;if((pf=fopen(salida,“wt“)==NULL){

puts(“Error “);return 1;

}while ((c = getchar())!=EOF){

putc(c, pf );}fclose(pf );return 0;

}Este programa permite cada vez que se ejecuta crear el archivo “salida.txt” con datos ingresados desde teclado.CuandoingreseloscaracteresdesdetecladoparafinalizardeberápresionarCrtl+Zluegoenter.

5. Realice un programa en C para leer un archivo de texto desde el disco.

#include <stdio.h>#include <conio.h>int main () {

int c;FILE *pf;char *salida = “salida.txt“;if((pf=fopen(salida,“rt“)==NULL){

puts(“Error “);return 1;

}while ((c = getc(pf ))!=EOF){

Page 65: Guía Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 65

Guía didáctica: Estructura de DatosSolucionario

putchar(c);}fclose(pf );getch();return 0;

}El programa permite leer el archivo “salida.txt” que se encuentra en el disco y presentarlo en consola.

Page 66: Guía Estructura de Datos

Guía didáctica: Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja66

Solucionario

8.5. Autoevaluación 5

1. EscribaunaVsiconsideraquelaafirmaciónesVERDADERAounaFsilaconsideraFALSA.

1 V2 V3 F4 F5 V6 V7 F8 V9 V10 V

2. RealizarunGrafoapartirdelasdefinicionesqueserealizanacontinuación

• G1={V1, A1} V1={a, b, c, d, e, f, g} G1={<a,b>,<b,c>,<b,d>,<c,d>,<d,a>,<e,b>,<g,c>, <g,e>, <f,e>, <f,g>}

• G2={V2, A2} V2={a, b, c, d, e, f, g, h} G2={(a, b), (a, c), (b, d), (c, d), (d, e), (d, f ), (e, f ), (e, g), (g, f ), (f, h), (g, h)}

Page 67: Guía Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 67

Guía didáctica: Estructura de DatosAnexos

9. Anexos

Anexo 1

Ordena los elementos de un arreglo utilizando el método burbuja.

Programa codificado en C, que permite ingresar 5 elementos desde teclado y aplicando uno de los métodos de ordenación burbuja permite presentar la lista ordenada en forma ascendente. El método en el cual se aplica el algoritmo se denomina OrdenarBurbuja.

El presente material ha sido reproducido con fines netamente didácticos, cuyo objetivo es brindar al estudiante mayores elementos de juicio para la comprensión de la materia, por lo tanto no tiene fin comercial.

DICT

IONA

RY

THES

AURU

S

Page 68: Guía Estructura de Datos

Guía didáctica: Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja68

Anexos

Anexo 2

Ordena los elementos de un arreglo utilizando el método por selección.

Programa en C que permite ingresar 10 elementos desde teclado y almacenarlos en un arreglo. El programa ordena los elementos del arreglo utilizando el algoritmo por selección y se implementa Ordenar selección.

Page 69: Guía Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 69

Guía didáctica: Estructura de DatosAnexos

Anexo 3

Ordena los elementos de un arreglo utilizando el método de inserción.

Programa en C, que permite ordenar una lista de 10 elementos aplicando el método de inserción. El método que implementa el algoritmo es Orden Inserción.

Page 70: Guía Estructura de Datos

Guía didáctica: Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja70

Anexos

Anexo 4

Programa que permite realizar una búsqueda aplicando el algoritmo de búsqueda secuencial

Programa codificado en C, que permite aplicar el método de búsqueda secuencial en un arreglo de 5 elementos.

Page 71: Guía Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 71

Guía didáctica: Estructura de DatosAnexos

Anexo 5

Permite realizar búsqueda binaria en arreglos.

Page 72: Guía Estructura de Datos

Guía didáctica: Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja72

Anexos

Anexo 6

Permite crear una lista enlazada, crea los nodos y le asigna valores a dichos nodos.

//librerías básicas para programar en C.#include <stdio.h> #include <stdlib.h>

//declaración de una estructura que contiene al punterostruct Elemento { int informacion; struct Elemento* Siguiente; //declaración de puntero siguiente.}; typedefstructElementoNodo;

voidpresentar(Nodo*cab);//declaracióndemétodopresentarquerecibecomoparámetroun//puntero.

main() { int dato; Nodo*pCabeza;//declaracióndeunpunterodeltipoNododeclaradoenlaestructura Nodo*p;//declaracióndeunpunterodeltipoNododeclaradoenlaestructura Nodo*aux;//declaracióndeunpunterodeltipoNododeclaradoenlaestructura pCabeza=malloc(sizeof(Nodo));//asignacióndinámicadememoriaalpuntero printf(“Ingrese la informacion del nodo: “);//presenta en pantalla el texto scanf(“%d”, &dato); //lee el dato ingresado (*pCabeza).informacion = dato; //al puntero en el campo información se asigna el dato //ingresado (*pCabeza).Siguiente=NULL;//elpunterosiguienteapuntaanullovacio. p = pCabeza; //se asigna la cabeza a un puntero para no perder la cabeza y recorrer la lista. //la sentencia repetitiva do permite llenar y crear los nuevos nodos de la lista. do { printf (“Ingrese la información del nodo: “); scanf (“%d”, &dato); //se asigna los nuevos valores a la lista if (dato! = -1) { aux=malloc(sizeof(Nodo)); (*aux).informacion = dato; (*aux).Siguiente=NULL; (*p).Siguiente = aux; p = aux; } } while(dato != -1); printf(“\n\n”); presentar(pCabeza); printf(“\n\n”); scanf(“\n\n”);

Page 73: Guía Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 73

Guía didáctica: Estructura de DatosAnexos

}voidpresentar(Nodo*cab){ Nodo*p=NULL; p = cab; while(p!=NULL){ printf(“%d, “, (*p).informacion); p = (*p).Siguiente; } }

Page 74: Guía Estructura de Datos

Guía didáctica: Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja74

Anexos

Anexo 7

Crea la estructura de una lista enlazada le añade valores a los nodos y presenta la lista enlazada.

#include <stdio.h>

struct Elemento { int información; struct Elemento* Siguiente; }; typedefstructElementoNodo;

main() { int dato; Nodo*pCabeza; Nodo*p; Nodo*aux; pCabeza=malloc(sizeof(Nodo)); printf(“Ingrese la información del nodo: “); scanf(“%d”, &dato); pCabeza->informacion = dato; pCabeza->Siguiente=NULL; p = pCabeza; do { printf(“Ingrese la información del nodo: “); scanf(“%d”, &dato); if (dato != -1) { aux=malloc(sizeof(Nodo)); aux->informacion = dato; aux->Siguiente=NULL; p->Siguiente = aux; p = aux; } } while(dato != -1); printf(“\n\n”); presentar(pCabeza); printf(“\n\n”); scanf(“\n\n”);}presentar(Nodo*cab){ Nodo*p=NULL; p = cab; while(p!=NULL){ printf(“%d, “, p->información); p = p->Siguiente; }

Page 75: Guía Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 75

Guía didáctica: Estructura de DatosAnexos

}Anexo 8

Permite crear una lista doblemente enlazada, ingresa los valores correspondientes a los nodos y luego presenta la información de los nodos.

#include <stdio.h> #include <stdlib.h>

struct Elemento { int información; struct Elemento* Anterior; struct Elemento* Siguiente; }; typedefstructElementoNodo;voidpresentar(Nodo*cab);voidpresentar2(Nodo*final);

main() { int dato; Nodo*pCabeza; Nodo*p; Nodo*aux; pCabeza=malloc(sizeof(Nodo)); printf(“Ingrese la información del nodo: “); scanf(“%d”, &dato); (*pCabeza).información = dato; (*pCabeza).Siguiente=NULL; (*pCabeza).Anterior=NULL; p = pCabeza; do { printf(“Ingrese la información del nodo: “); scanf(“%d”, &dato); if (dato != -1) { aux=malloc(sizeof(Nodo)); (*aux).información = dato; (*aux).Siguiente=NULL; (*aux).Anterior = p; (*p).Siguiente = aux; p = aux; } } while(dato != -1); printf(“\n\n”); presentar(pCabeza); printf(“\n\n”); presentar2(p); scanf(“\n\n”);}

Page 76: Guía Estructura de Datos

Guía didáctica: Estructura de Datos

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja76

ANEXOS

void presentar(Nodo* cab){ Nodo* p = NULL; p = cab; while (p != NULL) { printf(“%d, “, (*p).información); p = (*p).Siguiente; } }void presentar2(Nodo* final){ Nodo* p = NULL; p = final; while (p != NULL) { printf(“%d, “, (*p).información); p = (*p).Anterior; } }

DAGC-GERC/ymtene/14-07-2011/68gg/2013-05-22