Anda di halaman 1dari 76

18308

Titulacin Ciclo
Ingeniero en Informtica III
Estructura de
Datos
Gua didctica
5 crditos
Departamento de Ciencias de la Computacin y Electrnica
Seccin Inteligencia y Artifcial
UNIVERSIDAD TCNICA PARTICULAR DE LOJA
La Universidad Catlica de Loja
MODALIDAD ABIERTA Y A DISTANCIA
Autores:
Daniel Alejandro Guamn Coronel
Guido Eduardo Riofrio Caldern
Reestructura:
Manuel Sucunuta
Asesora virtual:
www.utpl.edu.ec
Estimado estudiante recuerde que la presente gua didctica est disponible en el EVA en formato PDF interactivo,
lo que le permitir acceder en lnea a todos los recursos educativos.
ESTRUCTURA DE DATOS
Gua didctica
Daniel Alejandro Guamn Coronel
Guido Eduardo Riofro Caldern
UNIVERSIDAD TCNICA PARTICULAR DE LOJA
CC
Ecuador 3.0 By NC ND
Diseo, maquetacin e impresin:
EDILOJA Ca. Ltda.
Telefax: 593 - 7 - 2611418
San Cayetano Alto s/n
www.ediloja.com.ec
edilojainfo@ediloja.com.ec
Loja-Ecuador
Derecho de autor 000356
Segunda edicin
Sexta reimpresin
ISBN - 978-9942-00-723-0
Maquetacin y diseo digital
EDILOJA Ca. Ltda.
Segunda edicin
ISBN digital- 978-9942-04-274-3
Esta versin digital, ha sido licenciada bajo las licencias Creative Commons Ecuador 3.0 de Reconocimiento - no comercial-sin obras derivadas; la cual
permite copiar, distribuir y comunicar pblicamente la obra, mientras se reconozca la autora original, no se utilice con fnes comerciales ni se realicen
obras derivadas. http://www.creativecommons.org/licences/by-nc-nd/3.0/ec/
Abril, 2013
2.
ndice ................................................................................................................................................................. 4
3. Introduccin ................................................................................................................................................... 6
4. Lineamientos generales del Modelo Educativo basado en competencias y
crditos acadmicos UTPL- ECTS ......................................................................................................... 7
4.1. Competencias genricas ........................................................................................................................... 8
4.2. Competencias especcas ......................................................................................................................... 8
5. Bibliografa ..................................................................................................................................................... 9
5.1. Bsica .......................................................................................................................................................... 9
5.2. Complementaria ........................................................................................................................................ 9
Direcciones Electrnicas .................................................................................................................................... 9
6. Orientaciones generales para el estudio ........................................................................................ 11
7. Proceso de enseanza-aprendizaje para el logro de competencias ............................... 13
PRIMER BIMESTRE
7.1 Planicacin para el trabajo del alumno .............................................................................................. 13
7.2. Sistema de evaluacin de la asignatura ................................................................................................ 15
7.3. Orientaciones especcas para el aprendizaje por competencias ..................................................... 16
Unidad 1: ESTRUCTURAS LINEALES ESTTICAS (ARREGLOS) .................................................................................. 16
1.1. Arreglos ...................................................................................................................................................... 16
1.2. Operaciones con arreglos........................................................................................................................... 20
1.3. Bsqueda ................................................................................................................................................... 22
1.4. Operaciones adicionales con arreglo ......................................................................................................... 23
1.5. Arreglos de dos dimensiones. .................................................................................................................... 25
Autoevaluacin 1 .................................................................................................................................................. 26
Unidad 2: ESTRUCTURAS DINMICAS: APUNTADORES, LISTAS ENLAZADAS ........................................................... 28
2.1. Apuntadores. .............................................................................................................................................. 28
2.2. Estructura de datos dinmicas. ................................................................................................................. 30
2.3. Listas enlazadas. ....................................................................................................................................... 30
2.4. Clasificacin de las listas enlazadas. ........................................................................................................ 31
2.5. Operaciones con listas enlazadas. ............................................................................................................ 32
Autoevaluacin 2 .................................................................................................................................................. 35
SEGUNDO BIMESTRE
7.2. Planicacin para el trabajo del alumno .............................................................................................. 36
7.4. Orientaciones especcas para el aprendizaje por competencias ..................................................... 37
Unidad 3: ESTRUCTURAS DE DATOS NO LINEALES, RBOLES ................................................................................. 37
3.1. rboles. ...................................................................................................................................................... 37
3.2. Terminologa. ............................................................................................................................................. 38
3.3. Aplicaciones de los rboles. ...................................................................................................................... 40
3.4. rboles binarios. ........................................................................................................................................ 40
3.5. Recorridos en rboles binarios. ................................................................................................................. 41
3.6. rboles binarios de bsqueda. .................................................................................................................. 42
Autoevaluacin 3 .................................................................................................................................................. 43
Unidad 4: ARCHIVOS.............................................................................................................................................. 45
4.1. Formas de acceso. ..................................................................................................................................... 45
4.2. Flujos.......................................................................................................................................................... 46
4.3. Tipo de datos FILE. .................................................................................................................................... 46
4.4. Abrir un archivo. ........................................................................................................................................ 47
4.5. Escribir datos. ............................................................................................................................................ 47
4.6. Leer datos. ................................................................................................................................................. 48
4.7. Cerrar el archivo. ........................................................................................................................................ 48
Autoevaluacin 4 .................................................................................................................................................. 49
Unidad 5: GRAFOS ................................................................................................................................................. 50
5.1. Componentes de un grafo. ........................................................................................................................ 51
5.2. Definiciones. .............................................................................................................................................. 52
5.3. Representacin. ......................................................................................................................................... 53
Autoevaluacin 5 .................................................................................................................................................. 55
8. Solucionario ................................................................................................................................................... 57
9. Anexos .............................................................................................................................................................. 66
10. Recursos Multimedia ................................................................................................................................. 76
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
5
Gua didctica: Estructura de Datos PRELIMINARES
Estructura de Datos es una asignatura con 5 crditos, forma parte del grupo de materias troncales de
carrera de la malla de Ingeniera en Informtica de la Escuela de Ciencias de la Computacin, modalidad
Abierta y a Distancia de la UTPL.
Con los contenidos de la asignatura se pretende cubrir los conocimientos bsicos de las estructuras de
datos desde la perspectiva computacional, de tal forma que al construir una aplicacin, sus programas
se diseen acorde al contexto del problema; escogiendo las estructuras necesarias, con algoritmos
eficientes y eficaces que garanticen el correcto funcionamiento de una solucin informtica.
Mltiples son los estructuras y diversas las alternativas de solucin, 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 da los diversos lenguajes de programacin facilitan el uso e
implementacin de las estructuras de datos, al incorporar componentes mucho mas fciles de manejar
desde el punto de vista de la programacin. Sin embargo la esencia conceptual de cada estructura sigue
siendo el mismo, por lo que para realizar la parte terica se a escogido como lenguaje de programacin
C en cualquiera de las versiones.
La temtica 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 anlisis de las estructuras lineales estticas
implementadas con arreglos. En la segundad unidad se realiza el anlisis de las estructuras de datos
dinmicas, concretamente con lo que se refiere a apuntadores y listas enlazadas.
Para el segundo bimestre, se realiza un anlisis de las estructuras de datos no lineales, por lo que en la
tercera unidad se abarca el tema de los rboles especficamente con las operaciones que se realizan
en los rboles binarios. La unidad cuatro se enfoca a la forma de almacenar informacin en archivos,
y finalmente en la unidad cinco se realiza un anlisis general de los grafos, tanto dirigidos como no
dirigidos.
Recuerde seor estudiante que el proceso requiere de su esfuerzo y dedicacin de su parte, y cualquier
inquietud que tenga no dude en hacrmelo conocer ya que estar junto a usted para acompaarle y
orientarle en el proceso de aprendizaje.
Muchos xitos y buena suerte.
Gua didctica: Estructura de Datos
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
6
PRELIMINARES
Sr. Estudiante recuerde que usted ha iniciado su formacin de tercer nivel con un sistema educativo
basado en el desarrollo de competencias a travs de crditos acadmicos. Este modelo le convierte
a usted en protagonista de su propia formacin y al profesor en mediador de las experiencias de
aprendizaje.
Surge entonces la necesidad de que tenga claro dos conceptos fundamentales competencia y crdito
acadmico.
Qu es una competencia? Entendemos por competencia el conjunto de actitudes, habilidades
y conocimientos que el alumno adquiere e incorpora segn sus caractersticas personales y
experiencias laborales y, que se ponen de manifesto en el desempeo 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 travs de la prctica y la experiencia.
Conocimientos: constituyen los contenidos cientfcos, conceptuales, tericos, conocidos tambin
como el aprendizaje acadmico.
Qu es un crdito acadmico UTPL / ECTS en la Modalidad a Distancia?
Un crdito acadmico es la unidad de medida del trabajo del estudiante, implica 32 horas de trabajo del
alumno (29 horas de trabajo autnomo y 3 horas de interaccin)
1
.
Los crditos acadmicos que el estudiante ir acumulando en el transcurso de la carrera involucran:
aprendizaje autnomo (estudio personal), tareas de investigacin, interaccin en el Entorno Virtual de
Aprendizaje (EVA), participacin en tutoras, videoconferencias y otros eventos acadmicos (Jornadas,
seminarios, cursos, congresos avalados por la UTPL), prcticas acadmicas, pasantas preprofesionales
y de vinculacin con la colectividad; actividades de evaluacin; as como la realizacin del trabajo de
titulacin.
El modelo adoptado por la UTPL contempla dos tipos de competencias: genricas y especfcas.
Competencias Genricas: Son aquellas capacidades (actitudes, habilidades y conocimientos)
comunes a todas las profesiones que se ofrecen en la UTPL. Constituyen una parte fundamental
del perfl que el estudiante debe desarrollar durante su formacin.
1 CONESUP (2008): Reglamento del Rgimen Acadmico del Sistema Nacional de Educacin Superior, art. 18.
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
7
Gua didctica: Estructura de Datos PRELIMINARES
Competencias Especfcas: son propias de la titulacin, aportan a la cualifcacin especfca para
la profesin, dndole consistencia social y profesional al perfl formativo.
Estructura general del programa formativo
Las Unidades Acadmicas o Escuelas de la UTPL han estructurado el programa formativo contemplando
cinco mbitos o bloques de asignaturas: Formacin Bsica (10%); Genricas de carrera (15%); Troncales
(35%) Complementarias (10%); Libre confguracin (10%) y adems, el Practicum que comprende las
Pasantas preprofesionales y de vinculacin con la colectividad y Practicum Acadmico (20%).
4.1. Competencias genricas
- Capacidad para organizar y planificar el tiempo.
- Capacidad de abstraccin, anlisis y sntesis.
- Habilidades para buscar, procesar y analizar informacin 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, disear y gestionar proyectos.
- Compromiso tico.
4.2. Competencias especficas
Estas competencias se encuentran detalladas en la planificacin de cada bimestre.
Gua didctica: Estructura de Datos
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
8
PRELIMINARES
5.1. Bsica
Joyanes, L. y Zahonero, I. (2005). Programacin en C. Metodologa, algoritmos y estructura de
datos. Madrid-Espaa: McGrawHill.
Los autores de esta obra tienen una amplia experiencia en temas relacionados con el diseo de
algoritmos, desarrollo de programas y en varios lenguaje de programacin. 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 analizarn; inicialmente el texto dispone de captulos
que permiten conocer el lenguaje (c) y no tener problemas con el mismo.
5.2. Complementaria
Joyanes, L.; Castillo, A.; Snchez, L.; Zahonero, I. (2005). C. Algoritmos, programacin y estructuras
de datos. Madrid-Espaa: McGrawHill. Serie Schawum.
Es un texto donde los autores enfocan el estudio en base a ejercicios y problemas que plantean
una solucin, para su anlisis. Tambin se plantean ejercicios propuestos que el estudiante los
podra resolver.
KOFFMAN Elliot B., WOLFGANG Paul, (2008) Estructura de datos con C++, Mxico, Editorial Mc
Graw Hill.
El presente libro contiene informacin y ejercicios, relacionados con listas, arreglos, objetos los
cuales se estudian a lo largo del presente perodo.
JOYANES Luis, MARTINEZ Ignacio, AZUELA Matilde, GARCIA Lucas, (2005) Estructura de Datos en C,
Espaa, Editorial Mc Graw Hill.
Es un texto muy didctico 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): Programacin en C++, Algoritmos, estructura de datos y objetos, Espaa,
Editorial Mc Graw Hill.
Texto que posee informacin de temtica relacionado a las estructuras de datos e incluye ejercicios
desarrollados en C++.
Direcciones Electrnicas
Urrutia, G. (2004): Curso de C [en lnea]. Disponible en: http://www.elrincondelc.com/cursoc/
cursoc.html [consulta 09/09/2009]
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
9
Gua didctica: Estructura de Datos PRELIMINARES
En esta direccin encontrar codifcacin referente a la declaracin y uso de arreglos, punteros y
buenas prcticas en C.
Zator Systems (2008): Curso C++. [en lnea]. Disponible en: http://www.zator.com/Cpp/E_Ce.htm
[consulta 09/09/2009]
Direccin que contiene amplias explicaciones con ejemplos sobre temas referentes a
programacin en C.
Pozo, S. (2001): rboles B. [en lnea]. Disponible en: http://articulos.conclase.net/arboles-b/
[consulta 09/09/2009]
Direccin electrnica que contiene informacin relacionada al tema de rboles en C.
Biblioteca Virtual UTPL, www.utpl.edu.ec/biblioteca
Gua didctica: Estructura de Datos
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
10
PRELIMINARES
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 Ingeniera en Informtica, constituye
una de las bases fundamentales para la formacin del estudiante dentro de su rea profesional, por lo
tanto, le ofrecemos algunas orientaciones de como aprovechar al mximo las diversas ayudas que se
incluyen en recursos didcticos como:
1) La gua didctica:
Le permitir orientarse sobre los temas a estudiar, adems contiene ejercicios de autoevaluacin
que le permitirn medir su grado de comprensin. Por lo tanto lea detenidamente la Gua Didctica,
ya que en ella se encuentran las indicaciones que guiarn su autoaprendizaje
2) El texto bsico:
En este texto se encuentran los contenidos que se van a tratar en la presente asignatura, su uso
esta restringido a la gua didctica, esto es, que deber acudir a la gua didctica para saber cuales
son los temas que deber abordar. Por ello, se recomienda trabajar en forma paralela la gua con
el texto bsico.
3) El entorno virtual de aprendizaje (EVA):
Es un espacio donde podr compartir con sus compaeros y con su profesor mediante mensajes,
anuncios, foros, tareas, etc. Adems su interaccin 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. Adems estos trabajos tienen una valoracin de 6 puntos
con el tiempo sufciente para desarrollarlos.
5) Tutora:
Es un tiempo semanal que como profesores dedicamos para atender las inquietudes en relacin a
los contenidos o desarrollo de trabajos, para ello se publicar un horario en el cual podrn asistir
personalmente o contactarse va telefnica, el mismo que se detalla en la cartula de la evaluacin
a distancia.
En cuanto a la forma de trabajo damos algunos lineamientos que le ayudarn 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 tcnicas como subrayado, cuadros
sinpticos y sobre todo mapas conceptuales.
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
11
Gua didctica: Estructura de Datos PRELIMINARES
2) Recuerde que cuenta con su profesor tutor para la comprensin de los temas, entonces la
comunicacin con el mismo ser fundamental, para lo cual debe familiarizarse con las formas
de comunicacin que tiene, ya sea por telfono (consultar horario de tutora), email, chat, y otras
herramientas tecnolgicas. Recuerde adems que existe una variada informacin en el internet,
bibliotecas digitales y tambin la documentacin que su profesor le acerca a travs del EVA.
3) Lea detenidamente la gua didctica, ya que en ella se encuentran las indicaciones que guiarn
su autoaprendizaje. Revise y analice cada uno de los temas del texto bsico y utilice tcnicas de
estudio como el subrayado, resmenes, cuadros sinpticos, 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 fnal de cada unidad de estudio, hgalas sin consultar ningn documento y luego verifque las
respuestas en el solucionario ubicado al fnal de la gua didctica. El contenido cientfco para el
desarrollo de la evaluacin a distancia usted lo encontrar en el texto bsico y la gua didctica.
Para poder ser ayudado en las diferentes temticas por los profesores / tutores usted puede utilizar
medios como: correo electrnico, entorno virtual de aprendizaje (EVA), chat, lnea telefnica.
En la gua didctica se incluyen algunas imgenes que sirven de focalizadores para iden-
tificar apropiadamente el texto, a continuacin se indican:
Icono Descripcin
Este cono se usar para solicitarle la lectura de una seccin del texto bsico (Lecturas
recomendadas, texto complementarios, OCW)
Desarrollo de autoevaluaciones, al final de cada unidad
Ejercicios y actividades recomendadas en toda la gua
Profundizar temas
Para recordar algunos aspectos importantes
Para indicar que existen anexos en los cuales se podr ampliar el anlisis o ejemplo.
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
13
Gua didctica: Estructura de Datos PRIMER BIMESTRE
PRIMER BIMESTRE
7.1 Planificacin para el trabajo del alumno
COMPETENCIAS
ESPECFICAS
OBJETIVOS DE
APRENDIZAJE
CONTENIDOS
CRONOGRAMA
ORIENTATIVO
ACTIVIDADES DE
APRENDIZAJE
Unidades/Temas Tiempo estimado
Analizar las necesidades
de conocimiento
necesarias para resolver
un problema.
Comprender, analizar
y resolver problemas
aplicando los mtodos
de la ciencia y la
ingeniera.
Aplicar la lgica
matemtica en el
contexto de las Ciencias
de la Computacin, con
proyeccin, al diseo de
circuitos, programacin,
anlisis y desarrollo de
algoritmos.
Reconoce el tipo de estructura
esttica lineal a utlizar en la
solucin de un determinado
problema.
Resuelve problemas de ndole
algebraico al utilizando
arreglos.
Propone un mtodo
para ordenar una lista de
elementos de diferente tipo
de datos.
UNIDAD 1:
1.1 Arreglos
1.2 Operaciones con Arreglos
1.3 Bsqueda
1.4 Arreglos de dos dimensiones
1.5 Autoevaluacin 1
Semana 1, 2 y 3.
18 horas de
autoestudio
12 horas de interaccin
con el EVA
Revisin de los
captulos preliminares
del texto base
(captulos 3, 4, 6 y 7).
Lectura del
captulo 9 (Arrays)
y 10 (Algoritmos
de ordenacin
y bsqueda) del
texto bsico tal
como se indica en
la gua didctica
complementado con
las actividades de la
unidad 1 de la gua
didctica
Gua didctica: Estructura de Datos
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
14
PRIMER BIMESTRE
Diseo e
implementacin
de programas de
aplicacin.
Diagnstico y solucin
de problemas en
software.
Desarrollo
de la primera
autoevaluacin que
se indica en la gua
didactica.
Realizar la interaccin
en el EVA: foro
Identifica la forma correcta de
crear apuntadores.
Analiza la represetacin de
punteros en la memora del
computador.
Identifica la forma de
representar las estructuras de
datos dinmicas.
Propone soluciones para crear
y recorrer listas enlazadas
UNIDAD 2:
2.1 Apuntadores
2.2 Estructura de datos dinmicas
2.3 Listas enlazadas
2.4 Clasifcacin de las listas enlazadas
2.5 Operaciones con listas enlazadas
2.6 Autoevaluacin 2
Semana 4, 5 y 6
18 horas de
autoestudio
12 horas de interaccin
con el EVA
Lectura de los
captulos 12 y 18
del texto bsico tal
como se indica en
la gua didctica
complementado con
las actividades de la
unidad 2 de la gua
didctica
Desarrollo de
la segunda
autoevaluacin que
se indica en la gua
didactica.
Realizar la interaccin
en el EVA: foro
Analizar ejercicios
adicionales que se
indicarn en el EVA.
UNIDADES 1 Y 2 Semana 7 y 8
12 horas de
autoestudio
8 horas de interaccin
Repaso general de la
materia
Desarrollo ejercicios
adicionales en el EVA
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
15
Gua didctica: Estructura de Datos PRIMER BIMESTRE
7.2. Sistema de evaluacin de la asignatura
1
.

A
u
t
o
e
v
a
l
u
a
c
i

n

*
2. Heteroevaluacin
3
.

C
o
e
v
a
l
u
a
c
i

n
Evaluacin a Distancia
E
v
a
l
u
a
c
i

n

P
r
e
s
e
n
c
i
a
l
P
a
r
t
e

O
b
j
e
t
i
v
a
P
a
r
t
e

d
e

E
n
s
a
y
o
I
n
t
e
r
a
c
c
i

n

c
o
n

e
l

E
V
A
A
c
t
i
t
u
d
e
s
Comportamiento tico
X X X X X X
Cumplimiento, puntualidad, responsabilidad X X X
Esfuerzo e inters en los trabajos X X X X X X
Respeto a las personas y a las normas de
comunicacin
X
H
a
b
i
l
i
d
a
d
e
s
Creatividad e iniciativa X
Contribucin en el trabajo colaborativo y de
equipo
Presentacin, orden y ortografa
X X
Emite juicios de valor argumentadamente
C
o
n
o
c
i
m
i
e
n
t
o
s
Dominio del contenido X X X X X
Investigacin (cita fuentes de consulta)
X X
Aporta con criterios y soluciones X X
Anlisis y profundidad en el desarrollo de
temas
PORCENTAJE
E
s
t
r
a
t
e
g
i
a

d
e

a
p
r
e
n
d
i
z
a
j
e
10% 20% 30%
M

x
i
m
o

1

p
u
n
t
o

(
C
o
m
p
l
e
t
a

l
a

e
v
a
l
u
a
c
i

n

a

d
i
s
t
a
n
c
i
a
)
70%
A
c
t
i
v
i
d
a
d
e
s

p
r
e
s
e
n
c
i
a
l
e
s

y

e
n

e
l

E
V
A
Puntaje 2 4 6 14
TOTAL 20 puntos
Para aprobar la asignatura se requiere obtener un puntaje mnimo de 28/40 puntos, que equivale al 70%
Sr. estudiante:
Tenga presente que la fnalidad de la valoracin cualitativa es principalmente formativa; sin embargo,
en circunstancias especiales podra afectarle positiva o negativamente en su califcacin cuantitativa.
Gua didctica: Estructura de Datos
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
16
PRIMER BIMESTRE
7.3. Orientaciones especficas para el aprendizaje por competencias
Unidad 1: ESTRUCTURAS LINEALES ESTTICAS (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 captulo 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:
Defnicin de tipos de datos bsicos (enteros, decimales, carcter, cadenas de caracteres,
booleanos, etc).
Uso de estructuras secuenciales, condicionales y repetitivas
Conocimientos bsicos del lenguaje C, entre otros.
Si no tiene los conocimientos bsicos se sugiere hacer una revisin de los
captulos: 3 (El lenguaje C: elementos bsicos), 4 (Operadores y expresiones),
6 (Estructuras de control: bucles) y 7 (Funciones) del texto bsico, 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 informacin a nivel de listas.
Ordenacin
Ordenacin
Bsqueda
Bsqueda
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
17
Gua didctica: Estructura de Datos PRIMER BIMESTRE
Revise el apartado 9.1. Arrays del texto base. Recalque su anlisis en la forma de
declarar, de definir el tamao, los subndices y el almacenamiento en memoria.
Puede utilizar la tcnica del subrayado, esto ayudar a lograr una mejor
comprensin 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 trminos 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 travs de un slo identificador, pero por supuesto para acceder a cada elemento
se lo realiza mediante un ndice.
En resumen los arreglos poseen las siguientes caractersticas:
Finitos: todo arreglo tiene un lmite, debe determinarse cul es el nmero mximo de elementos
que podrn formar parte del arreglo.
Homogneos: todos los elementos de un arreglo son del mismo tipo de dato, es decir: enteros,
string, char, double, etc., pero nunca una combinacin de mas de un tipo.
Ordenados: se puede determinar cul es el primer, segundo, tercer, ensimo elemento.
Adems recordemos que los arreglos pueden ser de varios tipos, destacando los siguientes:
Unidimensionales (Una dimensin).
Bidimensionales (Dos dimensiones).
Tres o ms dimensiones.
La mayora de los lenguajes de programacin al trabajar con arreglos utiliza la
indexacin basada en cero, que consiste en que el subndice de inicio del arre-
glo es cero. Por tanto si hablamos de un arreglo con 10 elementos sus subndi-
ces sern desde 0 al 9, muchas de las veces se tiende a confundir la posicin de
cierto elemento por sta situacin.
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 51
0 1 2 3 4 5 6 7 8 9
ndices
Figura 1.1 Representacin grfica de un arreglo unidimensional
En este arreglo es importante resaltar lo siguiente:
Tiene un nico identifcador: edades
Su tamao es de: 10 elementos
Cada uno de los elementos se los identifca a travs de el ndice. Por ejemplo: en el subndice 3 del
arreglo se encuentra el elemento 29, que sera el cuarto elemento de la lista.
Gua didctica: Estructura de Datos
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
18
PRIMER BIMESTRE
Utilizando el lenguaje de programacin C, la definicin del arreglo de la figura 1.1 sera:
int edades[10];
Al hacer esta definicin, en la memoria del computador se reserva el espacio de memoria de cierto
tamao (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 definicin anterior sera de 20 bytes. Se puede
utilizar el operador sizeof para saber cuantos bytes ocupa el arreglo, se puede utilizar con la siguiente
instruccin:
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 aplicacin), que puede ser desde la consola o de algn medio de almacenamiento
e incluso desde alguna librera o programa.
Finalizado el presente apartado se plantean ejercicios que permiten afianzar los conocimientos, por
lo que deber realizar el respectivo anlisis y desarrollo basndose en los contenidos anteriormente
tratados.
Ejercicio 1.1
1) Indique ejemplos en los cuales considera se aplica arreglos en la vida cotidiana.
2) Defna un ndice y un elemento de un arreglo unidimensional.
3) Si tuviramos un arreglo de caracteres con el texto ESTRUCUTRA cul sera el ndice de la letra
T?.
Ejercicio 1.2
Un curso de Computacin tiene 50 alumnos matriculados, si Ud. tuviese que disear un arreglo para
registrar las notas de los alumnos responda lo siguiente utilizando la programacin en C/C++:
1) De qu tipo de dato lo defnira?
2) Qu tamao tendra el arreglo?
3) Cul es el ndice inferior del arreglo?
4) Cul es el ndice superior del arreglo?
5) Cul sera la defnicin?
Ejercicio 1.3
Realice un programa en C/C++ que permita ingresar un arreglo de enteros de 5 elementos, luego que
haya ingresado los elementos al arreglo proceda a realizar las siguientes operaciones:
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
19
Gua didctica: Estructura de Datos PRIMER BIMESTRE
1. Mostrar o leer cada uno de los elementos ingresados.
2. Lea el elemento que se encuentra en la posicin 3.
Ejercicio 1.4
Cul es el resultado de la ejecucin del siguiente programa en C/C++ que utilice funciones de la librera
string.h para manipular cadenas de texto.
#include <stdio.h>
#include <string.h>
#include <ctype.h>
char cadena0[100];
char cadena1[ ]=Universidad;
char cadena2[ ]=Loja;
char cadena3[ ]=Tecnica de;
char cadena4;
int i;
main(){
printf(El contenido de la cadena1 es:%s\n\n,cadena1);
printf(El tamao del arreglo cadena1 es:%d\n\n,sizeof(cadena1));
printf(El tamao 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:
Gua didctica: Estructura de Datos
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
20
PRIMER BIMESTRE
Detalle del cdigo:
Lneas de la 1 a la 4 Libreras necesarias para trabajar con funciones tipo string y para
presentar los datos en pantalla y poder leerlos.
Lneas de la 6 a la 9 En estas lneas se declaran los arreglos de tipo de dato char para
almacenar las cadenas de texto.
Lnea 10 En C/C++ una cadena tambin puede ser declarada como un
puntero a char en este caso las funciones de manipulacin de
string interpretan a un dato de este tipo hasta encontrar en primer
carcter nulo.
Lneas 14 a la 17 En la primera lnea 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 ms del total de
letras que tiene la cadena, esto se debe a que en el arreglo se toma
en cuenta el carcter nulo que existe al final de todo el string. En la
segunda lnea 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.
Lneas 18 a la 24 La funcin strcat se utiliza para concatenar cadenas, la funcin
strpbrk divide un string en base a un carcter determinado y
retorna el string que est despus 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 tcnicas para manipular los datos de estas estructuras, es importante que ponga especial
atencin a estos algoritmos ya que los mismos son la base para desarrollar y resolver aplicaciones
especficas en programacin utilizando cualquier lenguaje de programacin.
Dentro de las operaciones que intervienen en los arreglos constan: lectura/escritura, asignacin,
actualizacin, ordenacin y bsqueda; las operaciones como declaracin, lectura y asignacin de datos
ya se estudiaron en los ejercicios anteriores que usted realiz; ahora conviene revisar los temas de
bsqueda, ordenacin.
Antes de abordar estos temas es necesario que estudie en el texto bsico los temas relacionados a
Algoritmos de Ordenacin y Bsqueda los mismos que le ayudarn a comprender de mejor manera lo
que se pretende en este captulo.
Del captulo 10 revise el apartado 10.1. Ordenacin, 10. 2 Ordenacin por
burbuja, 10.3 Ordenacin por seleccin y 10.4 Ordenacin por insercin
del texto base. Realice un anlisis de los algoritmos que utilizan cada mtodo.
La ordenacin, clasificacin de datos (en ingls, sort) es una operacin 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.
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
21
Gua didctica: Estructura de Datos PRIMER BIMESTRE
La lista se dice que est en orden ascendente si:
i<j implica que k[i]<=k[j]
y se dice que est en orden descendente si:
i>j implica que k[i]<=k[j]
para todos los elementos de la lista.
Finalizado el presente apartado se plantean ejercicios que permiten afanzar los conocimientos, por
lo que deber realizar el respectivo anlisis y desarrollo basndose 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) Anlisis matemtico, Clculo, Sistemas, Computacin, Anlisis Financiero, Fundamentos de la
programacin, Fundamentos de algoritmia.
3) 12.5, 25.3, 12.7, 34.5, 34, 27, 54.3
El algoritmo de la burbuja (apartado 10.2.1. del texto base) es bastante utilizado y precisamente en
la pgina 354 del texto base se realiza una demostracin paso a paso para ordenar un arreglo de 5
elementos. Preste una especial atencin a esta demostracin ya que en si es el desarrollo del algoritmo.
En el apartado 10.2.2 Codificacin del algoritmo de la burbuja se detalla la codificacin de ste
mtodo.
Ejercicio 1.6
Dado el siguiente arreglo:
45 37 39 29 31
1) Realice la secuencia de ordenamiento aplicando el algoritmo de la burbuja (apyese en el ejemplo
de la pgina 354 del texto base).
2) Realice una ejecucin manual con la codifcacin del algoritmo de la burbuja que se presenta en
el texto base en la pgina 355.
En el Anexo 1, se encuentra un programa que permite ordenar los elementos de
un arreglo utilizando el algoritmo por burbuja.
Gua didctica: Estructura de Datos
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
22
PRIMER BIMESTRE
Ejercicio 1.7
Dado el siguiente arreglo:
48 45 35 32 51
1) Realice la secuencia de ordenamiento aplicando el algoritmo por seleccin (apyese en el ejemplo
de la pgina 357 del texto base).
2) Realice una ejecucin manual con la codifcacin del algoritmo por seleccin que se presenta en
el texto base en la pgina 358
En el Anexo 2, se encuentra un programa que permite ordenar los elementos de
un arreglo utilizando el algoritmo por seleccin.
Ejercicio 1.8
Dado los siguientes datos: 2, 5, 7, 1, 4, 8
1) Realice grfcamente como se insertaran cada uno de los elementos en el arreglo (apyese en el
ejemplo de la pgina 359)
2) Realice la ejecucin manual con la codifcacin del algoritmo de insercin que se presenta en el
texto base en la pgina 360.
En el Anexo 3, se encuentra un programa que permite ordenar los elementos de
un arreglo utilizando el algoritmo de insercin.
1.3. Bsqueda
Otra de las operaciones que se pueden realizar con los arreglos son las bsquedas, por ejemplo si dispone
de una nmina y desea encontrar determinado empleado entonces tiene que aplicar un algoritmo de
bsqueda adecuado. Las bsquedas pueden ser de dos formas: secuencial y binaria.
Revise el apartado 10.7.3 Anlisis de los algoritmos de bsqueda binaria,
del texto base. Analice detenidamente las codificaciones de los algoritmos.
Comnmente la bsqueda secuencial se utiliza en arreglos desordenados, y la bsqueda binaria en
arreglos ordenados. Una de las desventajas de la Bsqueda Secuencial es la ineficiencia cuando se tiene
una gran cantidad de datos por el tiempo que se tiene para realizar la bsqueda.
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
23
Gua didctica: Estructura de Datos PRIMER BIMESTRE
En el Anexo 4 encontrar el programa que permite realizar la bsqueda secuencial
en arreglos
Tome en cuenta que cuando elabora algoritmos de bsqueda est condicionado a verificar si un
elemento se encuentra o no en el arreglo, para ello se podra aplicar la siguiente seccin de cdigo.
encontrado = 0;
for {i=0; i<tamanioMaximo; i++)
if (datos[i] == valorBuscado){
encontrado = 1;
break;
}
Revise el apartado 10.7.1 Bsqueda binaria y 10.7.2 Algoritmo y codifi-
cacin de la bsqueda binaria, del texto base. Analice detenidamente las
codificaciones de los algoritmos.
Con los arreglos ordenados utilizaremos la bsqueda 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 bsquedas en arreglos, es comn que surjan inquietudes tales como: Cules son las
semejanzas y diferencias de la Bsqueda Binaria y Secuencial?, Realizan el mismo proceso?, Se utilizan
los mismos bucles?, por lo que es importante poner atencin al anlisis 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 bsqueda binaria en
arreglos
1.4. Operaciones adicionales con arreglo
En los arreglos a mas de realizar el ordenamiento y bsquedas, 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 estn ordenados o desordenados.
Insercin en un arreglo desordenado
La operacin de insertar nuevos elementos en un arreglo desordenado generalmente se lo hace al fnal
del mismo, pero dependiendo de las caractersticas del problema esta insercin puede realizarse al inicio
verifcando si el arreglo se encuentra lleno o con informacin hasta dicha posicin, una buena prctica
para entender ste y los dems algoritmos es que desarrolle programas que satisfagan las posibilidades
de insercin, tomando como referencia las defniciones, algoritmos y ejercicios que se proponen en el
texto bsico y las que usted pueda consultar en la bibliografa complementaria o electrnica.
Finalizado el presente apartado se plantean ejercicios que permiten afianzar los conocimientos, por
lo que deber realizar el respectivo anlisis y desarrollo basndose en los contenidos anteriormente
tratados.
Gua didctica: Estructura de Datos
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
24
PRIMER BIMESTRE
Ejercicio 1.9
Realice un algoritmo en C/C++ que permita realizar insercin de nuevos elementos al inicio y fnal del
arreglo. Tal como se indica a continuacin:
Arreglo Original:
5 7 9 2 4
Insertar el nmero 3 al Inicio
3 5 7 9 2 4
Insertar el nmero 10 al fnal
3 5 7 9 2 4 10
Insercin en arreglo ordenados
La insercin 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
poda hacer al inicio, fnal o cualquier posicin.
Modifcacin:
Modifcar un elemento signifca reemplazar el valor existente por un nuevo dato, para cumplir con
este propsito primeramente debemos buscar el elemento, para lo cual se puede utilizar la funcin de
bsqueda estudiada anteriormente (Secuencial) y asignarle el nuevo valor.
5 7 9 2
5 7 8 2 4
Eliminacin:
El mtodo de bsqueda es sobre el cual gira el proceso de eliminacin ya que se debe buscar el dato a
eliminar y posteriormente mover el nmero que esta a la derecha del elemento eliminado. Recuerde que
al eliminar un elemento del arreglo la posicin del cual se elimina queda vaco, 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 anlisis y desarrollo basndose en los contenidos anteriormente
tratados.
Nuevo valor a
reemplazar por el 9 en la
posicin 2 del arreglo.
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
25
Gua didctica: Estructura de Datos PRIMER BIMESTRE
Ejercicio 1.10
Indique cul es la diferencia o diferencias y semejanzas entre la bsqueda binaria y la bsqueda
secuencial en arreglos.
1.5. Arreglos de dos dimensiones.
Luego de revisar los arreglos unidimensionales o de una dimensin (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 lgica de los programas que se aplican a las matrices no difieren mucho con
las estudiadas previamente y los que revis en el texto bsico, en este caso se debe tener en cuenta que
se aumenta un ndice ms y en consecuencia para recorrer la matriz se utilizan dos procesos o sentencias
de control repetitivas.
Cmo identificar los arreglos bidimensionales?, les proponemos algunos ejemplos: Qu tienen en
comn las tablas, las hojas de Excel y las matrices en matemticas? Ha identificado lo que tienen en
comn?, pues si, lo comn 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 continuacin en la figura 1.2 se presenta de forma
grfica la estructura de una matriz.
F
I
L
A
S
COLUMNAS
0 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 Grfica de una matriz
Junto con el texto bsico y la complementaria que usted crea conveniente, en el captulo relacionado a
arreglos bidimensionales, vamos a desarrollar algunos ejercicios que nos permitirn conocer algo ms
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 tamao de 4 filas por 5
columnas, se lo define de la siguiente manera:
int matriz[4][5];
Finalizado el presente apartado se plantea un ejercicio que permiten afianzar los conocimientos, por
lo que deber realizar el respectivo anlisis y desarrollo basndose en los contenidos anteriormente
tratados.
Posicin de un
elemento dentro
de la matriz,
posicin fila1,
columna2.
Gua didctica: Estructura de Datos
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
26
PRIMER BIMESTRE
Ejercicio 1.11
Disee y elabore un algoritmo en C/C++ que permita crear un arreglo de dimensin 3x4, y luego realice
las operaciones de ingreso y lectura de los valores en la matriz.
Esperamos que esta unidad haya cumplido las expectativas de adquirir conocimientos bsicos y
destrezas en el mbito de las estructuras de datos estticas, recuerde que si existe algn tema que aun
no est claro se puede comunicar con sus profesores / tutores a travs del EVA, correo electrnico, lnea
telefnica.
Hemos culminado el estudio de la primera unidad y es hora de realizar una autoevaluacin 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 gua didctica.
Autoevaluacin 1
1. Escriba una V si considera que la afrmacin es VERDADERA o una F si la considera FALSA.
1) Un array es una secuencia de objetos combinados de tipo entero y string. ( )
2) Un arreglo est compuesto por ndices ( )
3) En el arreglo de texto AUTOEVALUACION, la letra E se encuentra en la posicin 5. ( )
4) El tamao de un arreglo es mximo de 10 elementos. ( )
5) La siguiente declaracin de arreglo: int notas [8], permite declarar un arreglo de 8
elementos de tipo entero.
( )
6) Los arreglos unidimensionales contienen n flas. ( )
7) Los arreglos bidimensionales son conocidos como tablas o matrices. ( )
8) Los arreglos bidimensionales contienen columnas y flas. ( )
9) Dentro de las operaciones con arreglos constan: lectura, escritura, insercin,
bsqueda.
( )
10) Para acceder a un elemento de una matriz que se encuentra en una posicin
especfca se procede Arreglo [1][3].
( )
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
27
Gua didctica: Estructura de Datos PRIMER BIMESTRE
Resuelva lo siguiente
Parte A:
2. Declare un arreglo de orden m x n, puede ser tres flas y tres columnas. Se desea registrar la
siguiente matriz:
5 6 9
10 1 7
3 5 2
3. Escriba el cdigo para presentar los elementos de la matriz creada en el punto 1.
4. Escriba el cdigo para obtener los elementos de la diagonal principal de la matriz declarada y
pselos a un arreglo unidimensional.
5. Presente grfcamente el arreglo unidimensional del punto anterior ordenado de forma ascendente
y forma descendente.
Parte B:
6. Cul es la diferencia entre un arreglo unidimensional y un arreglo bidimensional.
7. Cules son las dos formas de inicializar una estructura?
8. Escriba los pasos que sigue el algoritmo de seleccin.
Gua didctica: Estructura de Datos
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
28
PRIMER BIMESTRE
Unidad 2: ESTRUCTURAS DINMICAS: 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 podra reservar ms memoria de la
que se necesita o que en algn momento nos falte ms de la reservada.
Hasta ahora hemos estudiado algunas de las operaciones que se realizan sobre estructuras de datos
estticas, es decir, que ocupan un valor fijo en memoria en el momento de compilacin. A continuacin
estudiaremos estructuras de datos dinmicas las mismas que se crean dinmicamente en el momento
de la ejecucin del programa, esto se logra mediante el uso de punteros o apuntadores.
2.1. Apuntadores.
Bien, antes de continuar retomemos el estudio del texto bsico para identificar algunos conceptos de
inters e importancia en Punteros.
Revisemos ahora el captulo 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 bsico se encuentran algunas definiciones de apuntadores, pues revisemos otra definicin
que tambin explica el tema de punteros: Un puntero es un tipo de dato simple que contiene la direccin
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 definicin de lo que es un puntero? se podra encontrar ms de una en la
bibliografa complementaria o en las referencias web. Ahora que ha revisado la teora de punteros
revisemos grficamente como podra representar un puntero:
P
n
850
Videoconferencia
Diapositivas
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
29
Gua didctica: Estructura de Datos PRIMER BIMESTRE
Explicando la representacin grfica anterior, se puede decir que el valor de un puntero (p) es una
direccin(n). La direccin depende del estado de la computadora en la cual se ejecuta el programa.
Est claro qu es un puntero y cmo se representan en memoria los mismos?, les invito a que continuemos
el estudio de las estructuras de datos dinmicas 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 anlisis y desarrollo basndose en los contenidos anteriormente
tratados.
Ejercicio 2.1
Complete el cuadro explicando que es lo que realiza cada defnicin
int *ptr1; Puntero a un tipo de dato entero (int).
long *ptr2;
char *ptr3;
float *f;
Ejercicio 2.2
Analice la siguiente codifcacin y Cul sera la salida?
#include <stdio.h>
#include <stdlib.h>
void main(){
int n = 10;
long *dato;
foat *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);
}
Gua didctica: Estructura de Datos
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
30
PRIMER BIMESTRE
2.2. Estructura de datos dinmicas.
Pasaremos a estudiar las estructuras de datos dinmicas, para ello es necesario revisar el texto bsico.
Revisemos ahora el captulo 13 del texto base. Los apartados a revisar son: 13.1
Gestin dinmica de memoria, 13.2 funcin de asignacin de memoria
malloc().
Recuerde que la definicin 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 asignacin de memoria sera
entonces:
P = (int*)malloc(sizeof(int))
Una vez revisada la parte terica en el texto bsico y apoyado en lo que usted puede consultar en la
bibliografa complementaria o web dispngase a realizar los siguientes ejercicios.
2.3. Listas enlazadas.
Una lista enlazada se conoce como una coleccin 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 captulo 18 del texto base. Los apartados a revisar son: 18.1.
Fundamentos tericos, 18.2. Clasificacin de las listas enlazadas y 18.3.
Operaciones en listas enlazadas.
Para poder declarar y utilizar las listas, debera conocer cuales son los elementos que componen un
puntero, recuerda cules son?, revisemos el siguiente grfico:
Figura 2.1 Elementos de un puntero en lista enlazada.
Es necesario diferenciar entre las dos entidades implicadas en el apuntamiento:
La variable puntero (Quien hace el apuntamiento) [.]
La variable apuntada (A quien se apunta) [ ]
Si revisamos el texto bsico podremos identificar ejemplos de declaracin de listas enlazadas.
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
31
Gua didctica: Estructura de Datos PRIMER BIMESTRE
Para profundizar en los temas de listas enlazadas les invito a revisar la temtica en el texto bsico en la cual
se explica los elementos de las listas enlazadas como son enlaces, direccin de memoria, representacin
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 dinmicas,
para ello desarrolle los siguientes ejercicios.
Ejercicio 2.3
Proponga 5 ejemplos de listas enlazadas que ud. pueda identifcar en la vida diaria.
a) Vagones de un tren.
b) _________________
c) _________________
d) _________________
e) _________________
Ejercicio 2.4
Represente grfcamente utilizando la estructura de las listas los vagones de un tren, por ejemplo
vagn1, vagn2, vagn3,., vagn n.., ubique el nodo inicial, los nodos siguientes, el nodo fnal y el
enlace correspondiente.
2.4. Clasificacin 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. Clasificacin de las listas del texto base.
Es importante tener claro las cuatro categoras que se pueden implementar las listas enlazadas. A
continuacin se indican grficamente estas categoras
Lista simplemente enlazadas
Lista doblemente enlazadas
Gua didctica: Estructura de Datos
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
32
PRIMER BIMESTRE
Lista circular simplemente enlazada
Lista circular doblemente enlazada
Finalizado el presente apartado se plantean ejercicios que permiten afianzar los conocimientos, por
lo que deber realizar el respectivo anlisis y desarrollo basndose en los contenidos anteriormente
tratados.
Ejercicio 2.4
Mencione una descripcin y caractersticas de cada una de las categoras de las cuatro listas enlazadas.
Cmo 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 travs de correo electrnico,
EVA, u otro medio de comunicacin, recuerde tambin apoyarse de la bibliografa complementaria que
Ud. crea conveniente.
Si recordamos un poco las estructuras de datos esttica, habamos 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 temtica de arreglos cuando trabajamos con listas enlazadas podemos
realizar muchas operaciones, dentro de las cuales se destaca la creacin, eliminacin, lectura, insercin,
actualizacin, entre otras, revisaremos conjuntamente con el texto bsico algunas de ellas.
Revise el apartado 18.3. Operaciones en listas enlazadas del texto base.
Declaracin de un nodo
En los captulos anteriores tanto de la gua didctica como del texto bsico revisamos como declarar
un nodo ya que es lo primordial cuando se trabaja con listas y se realiza operaciones sobre las mismas,
recordemos dicha declaracin con la cual empezamos el estudio de las operaciones en listas enlazadas,
revisemos la siguiente declaracin.
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
33
Gua didctica: Estructura de Datos PRIMER BIMESTRE
class Nodo {
string valor;
struct Nodo* enlace;
}
El poseer una declaracin class, permitir agrupar el tipo de dato y el apuntador o enlace al siguiente
nodo. En el texto bsico encontrar una declaracin 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) Asignar memoria para un elemento del tipo defnido en el ptr_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 dems operaciones que se pueden llevar a cabo con punteros, le recomiendo en base
a la revisin del texto bsico desarrollar los ejercicios de listas enlazadas y si tiene algn inconveniente
no dude en ponerse en contacto con sus profesores / tutores.
En el Anexo 6 y 7 encontrar cdigo 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 dinmicas.
Listas Doblemente Enlazadas
Como hemos evolucionado en el estudio de las listas enlazadas y una vez conocida su estructura,
definicin 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 bsico y la complementaria necesaria para luego desarrollar los
siguientes ejercicios de parte terica.
Gua didctica: Estructura de Datos
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
34
PRIMER BIMESTRE
Finalizado el presente apartado se plantean ejercicios que permiten afianzar los conocimientos, por
lo que deber realizar el respectivo anlisis y desarrollo basndose en los contenidos anteriormente
tratados.
Ejercicio 2.5
Mencione una descripcin y caractersticas de cada una de las categoras de las cuatro
En el siguiente cuadro ubique cuales son las diferencias y semejanzas entre listas enlazadas y listas
doblemente enlazadas, tome en cuenta tambin la forma de declaracin, uso, lectura, etc.
DIFERENCIAS SEMEJANZAS
LISTAS ENLAZADAS
DIFERENCIAS SEMEJANZAS
LISTAS
DOBLEMENTE
ENLAZADAS
Ejercicio 2.6
En la siguiente representacin grfca identifque los elementos que componen una lista doblemente
enlazada.
Luego de haber realizado los ejercicios anteriores podemos empezar a estudiar los temas tericos y
prcticos que se plantean en el texto bsico y tambin 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 declaracin 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 cdigo fuente de listas doblemente enlaza-
das, le sugerimos revisarlos.
Muy bien estimados estudiantes, esperamos que en la presente unidad la temtica 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 autoevaluacin, la misma que permitir conocer los vacos que aun
podran existir y que deber revisarlos con ms profundidad y concentracin; si existiese alguna duda
o comentario contacte con sus profesores / tutores a travs del EVA, correo electrnico, lnea telefnica.
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
35
Gua didctica: Estructura de Datos PRIMER BIMESTRE
Autoevaluacin 2
1. Escriba una V si considera que la afrmacin es VERDADERA o una F si la considera FALSA.
1. Una lista enlazada consta de un nmero 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 ms efciente de la memoria. ( )
3. El recorrido de una lista enlazada signifca pasar solo por el nodo inicial y fnal de
la lista.
( )
4. Las listas son consideradas estructuras de datos estticas. ( )
5. Las listas enlazadas estn dispuestos uno a continuacin de otro conectadas a
travs 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 PRCTICA
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 funcin qu permite encontrar el dato del nodo
5.
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
37
Gua didctica: Estructura de Datos SEGUNDO BIMESTRE
SEGUNDO BIMESTRE
7.2. Planificacin para el trabajo del alumno
COMPETENCIAS
ESPECFICAS
OBJETIVOS DE
APRENDIZAJE
CONTENIDOS
CRONOGRAMA
ORIENTATIVO
ACTIVIDADES DE
APRENDIZAJE
Unidades/Temas Tiempo estimado
Analizar las necesidades
de conocimiento
necesarias para resolver
un problema.
Comprender, analizar
y resolver problemas
aplicando los mtodos de
la ciencia y la ingeniera.
Aplicar la lgica
matemtica en el
contexto de las Ciencias
de la Computacin, con
proyeccin, al diseo de
circuitos, programacin,
anlisis y desarrollo de
algoritmos.
Diseo e Implementacin
de programas de
aplicacin.
Diagnstico y solucin de
problemas en software.
Identifica los tipos
de rboles de forma
conceptual y grfica.
Reconoce los mtodos
para recorrer un rbol
binario.
Propone una forma
de representacin
estructurada para los
rboles binarios
Propone soluciones
acordes a la necesidad
a travs de los rboles
binarios.
UNIDAD 3:
3.1. rboles.
3.2. Terminologa.
3.3. Aplicaciones de los
rboles.
3.4. rboles binarios.
3.5. Recorridos en arboles
binarios.
3.6. Autoevaluacin 3.
Semana 1 y 2
12 horas de autoestudio
8 horas de interaccin con
el EVA y tutoras
Lectura del captulo 20(rboles)
del texto bsico tal como se
indica en la gua didctica
complementado con las
actividades de la unidad 3 de la
gua didctica.
Desarrollo de la autoevaluacin
que se indica en la gua didactica.
Realizar la interaccin en el
EVA y resolviendo los ejercicios
prcticos que se plantean
Propone soluciones
informticas para el
almacenamiento de
informacin.
Identifica el tipo de acceso
que se debe realizar en un
determinado archivo.
Reconoce el tipo de
archivo 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. Autoevaluacin 4
Semana 3 y 4
12 horas de autoestudio
8 horas de interaccin con
el EVA y tutoras
Lectura del captulo 15(Entradas
y salidas por archivos) del texto
bsico tal como se indica en la
gua didctica complementado
con las actividades de la unidad 4
de la gua didctica.
Desarrollo de la autoevaluacin
que se indica en la gua didactica.
Realizar la interaccin en el
EVA y resolviendo los ejercicios
prcticos que se plantean
Identifica y representa
datos en grafos.
Recnoce el tipo de grafo
y sus formas de lectura
(recorrido)
Realiza operaciones para
extarer la informacin de
los grafos.
UNIDAD 5:
5.1Componentes de un
grafo.
5.2 Defniciones.
5.3 Representacin
5.4 Autoevaluacin 5
Semana 5 y 6
12 horas de autoestudio
8 horas de interaccin con
el EVA y tutoras
Estudio autnomo de la quinta
unidad.
Lectura analtica.
Desarrollo de actividades
recomendadas en el texto bsico
y en la gua didctica.
Interaccin en el EVA.
Finalizar con el desarrollo de la
evaluacin a distancia.
COMPETENCIAS
ESPECFICAS
OBJETIVOS DE
APRENDIZAJE
CONTENIDOS
CRONOGRAMA
ORIENTATIVO
ACTIVIDADES DE
APRENDIZAJE
Unidades/Temas Tiempo estimado
UNIDADES DE LA 3 A
LA 5
Semana 7 y 8
12 horas de autoestudio
8 horas de interaccin con
el EVA y tutoras
Preparacin para evaluacin
presencial del segundo bimestre.
Gua didctica: Estructura de Datos
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
38
SEGUNDO BIMESTRE
7.4. Orientaciones especficas 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 dinmicas, particularmente las listas enlazadas
y tal como nos pudimos dar cuenta tienen algunas ventajas: en primer lugar se pueden crear nodos en
tiempo de ejecucin; es decir, conforme se necesite almacenar mas informacin 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 tambin son estructuras
dinmicas puesto que se crean mediante punteros, pero a diferencia de las listas enlazadas estas
estructuras son de tipo jerrquico, lo cual quiere decir que la informacin est organizada en varios
niveles y como podremos ver ms adelante existen muchos caminos para recorrer la estructura desde el
primer elemento o raz hasta los elementos de los niveles ms avanzados.
Para el estudio de esta unidad estaremos ayudandonos del texto base concretamente del captulo 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
informacin estn relacionados entre s a travs de ramas. El rbol genealgico es el ejemplo tpico ms
representativo del concepto de rbol general.
Recorrido de
rboles
rboles
rboles
Recorrido de
rboles
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
39
Gua didctica: Estructura de Datos SEGUNDO BIMESTRE
Un rbol consta de un conjunto finito de elementos, denominados nodos y un conjunto finito de lneas
dirigidas, denominadas ramas, que conectan los nodos. El nmero de ramas asociado con un nodo es el
grado del nodo. Si un rbol no est vaco, entonces el primer nodo se llama raz.
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 fsico, a continuacin estudiemos los trminos que definen
las diferentes caractersticas de un rbol.
3.2. Terminologa.
La representacin bsica del rbol requiere que se utilice la terminologa apropiada, por lo que lo invito
a revisar el tema en el texto bsico.
Revise el apartado 20.1.1. Terminologa bsica del texto base.
En la figura 3.1, se realiza una representacin grfica de un rbol en la que se destacan sus atributos.
Figura 3.1 Terminologa de rboles
En base a la figura 3.1 revisemos que componentes del rbol corresponden a cada uno de los trminos
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
Gua didctica: Estructura de Datos
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
40
SEGUNDO BIMESTRE
Los rboles pueden representarse de varias maneras, aunque la forma ms comn es mediante grafos,
tal como se muestra en la figura 3.2.
Figura 3.2 Representacin grfica de un rbol
Continuando 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 anlisis y desarrollo basndose en los contenidos anteriormente
tratados.
Ejercicio 3.1
Consulte en el texto bsico base o en cualquier fuente los conceptos relacionados con rboles que se
indican a continuacin:
Nodo raz: ....................................................................................................................
Nodo padre: ....................................................................................................................
Nodo hijo ....................................................................................................................
Nodos
descendientes
....................................................................................................................
Nodos ascendientes ....................................................................................................................
Nodos hermanos ....................................................................................................................
Nodo hojas ....................................................................................................................
Nodo interno ....................................................................................................................
Nodo no terminal ....................................................................................................................
Nivel ....................................................................................................................
Arcos ....................................................................................................................
Ramas ....................................................................................................................
Camino ....................................................................................................................
Altura ....................................................................................................................
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
41
Gua didctica: Estructura de Datos SEGUNDO BIMESTRE
Subrbol ....................................................................................................................
rbol equilibrado ....................................................................................................................
Muy bien, Le result interesante el ejercicio propuesto?, seguro que si ya que en l se pueden ubicar
algunos conceptos que son bsicos para el presente estudio, ahora que hemos revisado la parte terica
de los rboles es importante ver la importancia y aplicabilidad de los mismos, revisemos esta temtica
a continuacin.
3.3. Aplicaciones de los rboles.
Pensemos que las Estructuras de Datos existen para solucionar problemas de nuestro entorno, caso
contrario no tendr razn su estudio y aplicacin en nuestros programas, revisemos las aplicaciones que
tienen este tipo de estructuras las mismas que se pueden utilizar para:
Representar frmulas matemticas.
Organizar adecuadamente la informacin.
Registrar la historia de un campeonato de tenis.
Construir un rbol genealgico.
Anlisis de circuitos elctricos.
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 anlisis y desarrollo basndose en los contenidos anteriormente tratados.
Finalizado el presente apartado se plantean ejercicios que permiten afianzar los conocimientos, por
lo que deber realizar el respectivo anlisis y desarrollo basndose en los contenidos anteriormente
tratados.
Ejercicio 3.2
Investigue por lo menos 5 aplicaciones adicionales de los rboles.
..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................
Esperamos est comprendiendo la parte terica de rboles ahora antes de empezar a codificar un rbol
al igual que las dems estructuras de datos es necesario conocer su representacin, le invitamos a revisar
la forma de representar un rbol.
3.4. rboles binarios.
En este tipo de rbol ningn nodo puede tener ms de dos subrboles, es decir cada nodo puede tener
cero, uno o dos hijos (subrboles).
Gua didctica: Estructura de Datos
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
42
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 Representacin grfica de un rbol binario
Un rbol binario es una estructura recursiva, cada nodo es la raz de su propio subrbol y tiene hijos, que
son races de rboles llamados subrboles 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 (mximo dos subrboles) los cual lo hace
ms prctico 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 continuacin.
3.5. Recorridos en rboles binarios.
Una de las tareas bsicas que se realiza en un rbol binario es el recorrido lo cual significa visitar los
nodos del rbol en forma sistemtica. Un recorrido de un rbol binario, requiere que cada nodo del rbol
sea procesado (visitado) una vez y slo 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:
Recorrido Preorden (NID)
- Visitar la raz (N).
- Recorrer el subrbol izquierdo (I).
- Recorrer el subrbol derecho (D).
Recorrido Enorden(IND)
- Recorrer el subrbol izquierdo (I).
- Visitar la raz (N).
- Recorrer el subrbol derecho (D).
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
43
Gua didctica: Estructura de Datos SEGUNDO BIMESTRE
Recorrido Postorden (IDN)
- Recorrer el subrbol izquierdo (I).
- Recorrer el subrbol derecho (D).
- Visitar la raz (N).
A continuacin se presenta los tres recorridos mencionados anteriormente para el rbol mostrado en la
figura: 3.4
Figura 3.4 rbol Binario.
Preorden: L, D, B, H, G, J, Q, X, T, S, W, Y
Enorden: B, D, G, H, J, L, Q, S, T, W, X, Y
Postorden: 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 bsqueda.
Recuerde, los rboles binarios de bsqueda son muy utilizados, y son la base para nuevas
estructuras como los rboles binarios equilibrados (AVL), la principal caracterstica es su
facilidad en cuanto a los algoritmos para trabajar con la informacin almacenada.
Gracias a las caractersticas de los rboles binarios se puede extender su funcionalidad; a continuacin
revisaremos el rbol binario de bsqueda el mismo que consiste en una estructura sobre la cual se puede
realizar eficientemente las operaciones de bsqueda, insercin y eliminacin.
Formalmente se define un rbol binario de bsqueda de la siguiente manera:
Para todo nodo T del rbol debe cumplirse que todos los valores de los nodos del subrbol izquierdo de
T deben ser menores o iguales al valor del nodo T. De forma similar, todos los valores de los nodos del
subrbol derecho de T deben ser mayores o iguales al valor del nodo T.
Un rbol binario de bsqueda se construye en base a una lista de nmeros dados (claves), en el cual el
primer nmero de dicha lista ser la raz del rbol, y los siguientes valores se ubican de acuerdo al criterio
antes indicado.
Gua didctica: Estructura de Datos
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
44
SEGUNDO BIMESTRE
A continuacin vamos a crear un rbol binario de bsqueda para la siguiente lista de nmeros: 65, 75,
30, 4, 41, 85.
65
30 75
4 41 85
Figura 3.5 rbol Binario.
Hemos concluido el estudio de esta unidad, como se podr dar cuenta este tipo de estructuras son muy
importantes, debido a sus caractersticas particulares, principalmente la organizacin jerrquica. Para
evaluar el avance que va adquiriendo srvase responder la siguiente autoevaluacin.
Autoevaluacin 3
1. Escriba una V si considera que la afrmacin es VERDADERA o una F si la considera FALSA.
1 Los punteros hacen un uso ms 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 raz. ( )
4 Un rbol binario puede tener ms de dos subrboles. ( )
5 El recorrido de un rbol supone visitar cada nodo slo una vez. ( )
6
El recorrido postorden procesa primero el subrbol izquierdo, despus la raz y a
continuacin el subrbol derecho.
( )
7
Al trabajar con punteros: Se puede declarar variables puntero que apunten a
cualquier tipo de dato, incluso a otros punteros?.
( )
8 El operador & devuelve la direccin de la variable a la cual se aplica. ( )
9 Los rboles sirven para organizar adecuadamente la informacin. ( )
10
Todo nodo que no es raz, ni terminal u hoja se conoce con el nombre de
interior.
( )
RESUELVA LA SIGUIENTE PARTE PRCTICA
2. Dado el siguiente rbol.
Indique lo siguiente:
Padres:
Hijos
Hojas
Hermanos
Profundidad
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
45
Gua didctica: Estructura de Datos SEGUNDO BIMESTRE
3. Construir un rbol binario de bsqueda con los siguientes datos: 50, 25, 75, 10, 40, 60, 90,
35, 45, 70, 42.
4. Del rbol binario de bsqueda del ejercicio anterior, realice lo siguiente:
Recorrido Preorden:
Recorrido Enorden:
Recorrido Postorden:
Gua didctica: Estructura de Datos
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
46
SEGUNDO BIMESTRE
Unidad 4: ARCHIVOS
Hasta ahora hemos estudiado las estructuras de datos tanto estticas (arreglos) como dinmicas (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 informacin, para lo cual se
debe utilizar otras tcnicas de almacenamiento permanente como son los archivos.
Para la presente unidad es necesario revisar el captulo 15 Entradas y salidas por archivos, del texto base
Tal como lo he comentado anteriormente, para la buena comprensin de los diferentes temas es
importante en primera instancia tener claro que los aspectos tcnicos de las diferentes estructuras
tienen como base el comportamiento real de ciertos objetos de nuestro entorno, en funcin de esto
revisemos a continuacin las formas de acceso a un archivo.
4.1. Formas de acceso.
El acceso a la informacin en un archivo se lo puede realizar de 2 maneras:
Acceso Secuencial.
Recordemos como se haca para acceder a un tema musical en los clsicos casettes de audio, se tena que
adelantar o retroceder la cinta hasta encontrar el tema en cuestin, a este lo llamamos acceso secuencial
puesto que implica recorrer todos los temas anteriores o posteriores de forma similar, cuando el acceso
a la informacin (registros) de un archivo es secuencial es necesario recorrer o visitar todos los registros
precedentes.
Acceso Directo.
De la misma forma pensemos como se accede a un tema musical en un clsico disco de acetato o inclusive
un CD de msica 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 informticos, desde el ms pequeo
hasta la ms grande base de datos necesita guardar la informacin en dispositivos externos de
almacenamiento permanente, tales como: CD, DVD, Flash Memory, Disco Duro, etc. la informacin se
almacena en archivos (ficheros), cuyos datos estn 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
informacin.
En forma general un archivo es una forma o medio que disponen los sistemas operativos para guardar
informacin en una sola unidad lgica de almacenamiento.
Finalizado el presente apartado se plantean ejercicios que permiten afianzar los conocimientos, por
lo que deber realizar el respectivo anlisis y desarrollo basndose en los contenidos anteriormente
tratados.
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
47
Gua didctica: Estructura de Datos SEGUNDO BIMESTRE
Ejercicio 4.1
Describa al menos 5 aplicaciones en las cuales se pueda utilizar Archivos para almacenar informacin:
.
.
.
.
.
.
Revisemos a continuacin los aspectos tericos relacionados con el movimiento o flujo de informacin
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 informacin desde un origen hasta un destino, en
nuestro caso desde la aplicacin hasta un fichero, pero este concepto se lo utiliza en otros mbitos de
las aplicaciones en C, por ejemplo cuando desarrollamos un programa, automticamente se crean dos
flujos: el primero que se refiere al envo de informacin desde la aplicacin hasta la pantalla (stdout para
presentar datos) y un segundo flujo para enviar datos desde el teclado hasta la aplicacin (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 terica de la misma, pero
adicional a ello es necesario saber que nunca se empieza a trabajar desde cero o desde lo ms bsico; los
lenguajes de programacin ya tienen definidos ciertos tipos de datos o estructuras que nos servirn 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 continuacin.
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 algn 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
tcnica, en este caso utilizaremos un puntero o en otras palabras la direccin en la cual se encuentra
ubicado el archivo que vamos a procesar, adicionalmente veamos que para almacenar la informacin
tcnica del archivo que estamos procesando es necesario disponer de una estructura (FILE) en cuyos
campos se almacenen las caractersticas del fichero, pues esta estructura FILE ya est definida y por lo
tanto para referirnos a un fichero desde una aplicacin C debemos declarar un puntero a esta estructura,
se puede utilizar la siguiente nomenclatura:
FILE *F;
Gua didctica: Estructura de Datos
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
48
SEGUNDO BIMESTRE
Como nos podemos dar cuenta, la variable f es la referencia al fichero que utilizaremos en nuestra
aplicacin, 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 definicin de archivo FILE a partir de una estructura de datos.
A continuacin revisemos las tareas tpicas 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 funcin
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 parmetro modo debe indicar precisamente el modo en que ser abierto
el archivo (en la seccin 15.3.1 del texto bsico se encuentran especificados estos parmetros). Esta
funcin puede retornar un valor NULL si existi un error al intentar abrir el archivo.
Es importante aclarar que en la presente asignatura pondremos especial inters 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 parmetro modo especificamos el modo de escritura w y la
apertura y/o creacin fue correcta, ya podemos ejecutar los procesos correspondientes
putc(c, f );
fputc(c, f );
En estas funciones a ms de requerir la referencia del archivo en el cual escribirn los datos, tambin se
debe especificar el dato que ser escrito.
A continuacin apliquemos los conceptos estudiados, empecemos con la codificacin de un pequeo
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 nmeros en un archivo de tipo texto:
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
49
Gua didctica: Estructura de Datos SEGUNDO 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 informacin 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 funcin de lectura de datos encuentra el indicador
de fin de archivo (EOF). Estas funciones de lectura de datos se encuentran especificadas en la seccin
15.4 del texto bsico:
c = getc(f );
c = fgetc(f );
Como es de imaginar estas funciones requieren como parmetro la referencia del fichero que ser ledo,
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 anlisis y desarrollo basndose 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 ejecucin del
programa el archivo se cierra automticamente, es necesario cerrar explcitamente el fichero para evitar
posibles inconsistencias en la informacin guardada, pues al cerrar el archivo se obliga a guardar datos
que posiblemente no estn 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 parmetro 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
autoevaluacin.
Gua didctica: Estructura de Datos
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
50
SEGUNDO BIMESTRE
Autoevaluacin 4
1. Escriba una V si considera que la afrmacin es VERDADERA o una F si la considera FALSA.
1
La estructura FILE contiene informacin sobre el archivo tal como la direccin
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. ( )
4
La 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 librera stdio.h. ( )
7
El cierre de un archivo debe realizarse con la finalidad de evitar que el archivo
que de incompleto.
( )
8
Los archivos se guardan en dispositivos externos tal como flash memory, cd,
dvd, etc.
( )
9
La apertura de un archivo debe realizarse de la siguiente manera:
FILE *pf;
pf = fopen(nombre_archivo, modo, FILE)
( )
10
Al 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.
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
51
Gua didctica: Estructura de Datos SEGUNDO BIMESTRE
Unidad 5: GRAFOS
Recursos educativos multimedia
En el rea de la informtica existen muchos conceptos que si bien es cierto se definen mediante
herramientas o estructuras de datos permiten modelar implcitamente conceptos computacionales en
nuestra mente cada da, un caso particular de esto son los Grafos, pensemos que cuando queremos
movilizarnos de una ciudad a otra en nuestro vehculo, normalmente empezamos trazando una ruta
o definimos algunas ciudades por las cuales pasaremos o tambin seleccionamos de entre varias
alternativas la mejor ruta; por otra parte pensemos tambin en las compaas areas internacionales
normalmente hacen sus itinerarios teniendo en cuenta algunas ciudades en las cuales se har escala;
visto desde el punto de vista informtico lo que estamos trazando es un grafo y tal como lo hemos visto
tiene una gran cantidad de aplicaciones en reas como: geografa, ingenieras, en el campo industrial,
sistemas de informacin geogrfica, en las compaas de distribucin de productos, etc.
Consecuentemente en el contexto informtico 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 relacin con los grafos y sus aplicaciones.
Varios autores realizan la siguiente definicin: Un grafo, G, es un par, compuesto por dos conjuntos
V y A. Al conjunto V se le llama conjunto de vrtices o nodos del grafo. A es un conjunto de pares de
vrtices, estos pares se conocen habitualmente con el nombre de arcos o ejes del grafo. Se suele utilizar
la notacin G = (V, A) para identificar un grafo.
Desarrolle el ejercicio que a continuacin 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 tericos
de esta estructura, y al igual que todos los temas antes estudiados, la terminologa es importante para la
comprensin del tipo de datos propiamente dicho.
Videoconferencia Diapositivas
Gua didctica: Estructura de Datos
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
52
SEGUNDO BIMESTRE
5.1. Componentes de un grafo.
Desde el punto de vista ms formal, un grafo est constituido bsicamente por dos elementos:
Vrtices o nodos, los cuales son los puntos o aristas que conforman el grafo.
Arcos o lneas que unen los vrtices.
Adicionalmente a los componentes existen otros trminos ms especficos es decir en algunos casos son
conceptos que se aplican a determinados grafos dependiendo de su naturaleza o contenido y tipo de
informacin 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 anlisis y desarrollo basndose en los contenidos anteriormente
tratados.
Ejercicio 5.2
Dado el siguiente conjunto de Vrtices y aristas, represente grfcamente los respectivos grafos
(identifque 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 representacin grfca de stas tres estructuras es la siguiente:
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
53
Gua didctica: Estructura de Datos SEGUNDO BIMESTRE
5.2. Definiciones.
A continuacin revisemos las definiciones de los trminos relacionados con los Grafos:
Grafo no dirigido: Grfcamente este tipo de grafo no tiene direccin o no tiene fechas, de manera
formal podramos decir que el arco que une los dos nodos se puede representar de dos formas
(n1, n2) o (n2, n1), ver Figura 5.1.
Grafo dirigido. El ejemplo de la fgura 5.2 es un Grafo dirigido, puesto que las fechas indican la
relacin existente entre los dos nodos y por otra parte al arco (E, D) no se lo puede representar de
la forma (D, E).
Grafo valorado. En este caso cada uno de los arcos tiene un peso o valor.
Grado. Es el nmero de arcos que contiene el nodo.
Grado de entrada. En un Grafo dirigido es el nmero de arcos que llegan al nodo.
Grado de salida. Es el nmero de arcos que salen del nodo.
Camino: Es la secuencia de vrtices necesarios para alcanzar un nodo de destino.
Longitud de un camino: Es la cantidad de nodos incluidos en un camino, incluyendo el primero y
el ltimo nodo.
La mejor manera de entender los conceptos de un grafo es aplicarlos en un modelo especifico, para lo
cual srvase desarrollar el siguiente ejercicio.
Ejercicio 5.2
Elabore un Grafo a partir de las defniciones que se realizan a continuacin.
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>}
Gua didctica: Estructura de Datos
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
54
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 identifcar la representacin formal o matemtica
de los mismos.
Una vez que hemos estudiado la parte relacionada con los conceptos, veamos cmo se almacena
la informacin 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. Representacin.
Obviamente para trabajar con la estructura Grafo en un sistema computacional este debe ser
representado utilizando estructuras propias de los lenguajes de programacin, en base a esto veremos
que existen dos formas de representar esta estructura:
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
55
Gua didctica: Estructura de Datos SEGUNDO 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 relacin 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 E
Figura 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 relacin 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.
Gua didctica: Estructura de Datos
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
56
SEGUNDO BIMESTRE
Figura 5.5 Listas de adyacencia utilizando listas enlazadas
De la misma forma la representacin mediante listas de adyacencia utiliza listas enlazadas, como ejercicio
final al estudio de esta estructura srvase realizar el programa correspondiente para el Grafo anterior y
utilizando esta ltima forma de representacin.
Muy bien estimados estudiantes hemos llegado a la finalizacin del estudio de la asignatura en este
segundo bimestre y por ende del presente ciclo, esperamos que los conocimiento adquiridos sean los
bsicos y necesarios para iniciar en el desarrollo de aplicaciones pequeas pero que tengan eficiencia y
eficacia, es por ello que le invitamos a desarrollar la ltima autoevaluacin esperando todo le salga de
lo mejor. Adelante y xitos!.
Autoevaluacin 5
1. Escriba una V si considera que la afrmacin es VERDADERA o una F si la considera FALSA.
1 Se conoce como arco a la lnea que une dos nodos de un Grafo. ( )
2 Un Grafo dirigido es aquel cuyas lneas tienen una flecha es decir una direccin. ( )
3
La Matriz de adyacencia se utiliza para representar Grafos nicamente cuando
estos son valorados.
( )
4
Se dice que un Grafo es valorado cuando los nodos tienen un numero en lugar
de tener un texto o una letra.
( )
5 El trmino Camino es un concepto utilizado en Grafos. ( )
6
La Longitud entre dos nodos de un Grafo es la suma de los valores que tienen los
arcos que los une.
( )
7
Si el Grafo es no dirigido el Grado puede clasificarse en: Grado de entrada y
Grado de salida.
( )
8
En 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).
( )
9
El uso de listas de adyacencia para representar Grafos hace mas ptimo el uso de
memoria.
( )
10 Se puede utilizar Grafos en Ingeniera Elctrica. ( )
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
57
Gua didctica: Estructura de Datos SEGUNDO BIMESTRE
2. Realizar un Grafo a partir de las defniciones que se realizan a continuacin
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)}
Gua didctica: Estructura de Datos
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
58
SOLUCIONARIO
8.1. Autoevaluacin 1
1. Escriba una V si considera que la afrmacin es VERDADERA o una F si la considera FALSA.
1 F
2 V
3 F
4 F
5 V
6 F
7 V
8 V
9 V
10 V
Parte A:
2. Declare un arreglo de orden m x n, puede ser tres flas y tres columnas. Se desea registrar
la siguiente matriz:
5 6 9
10 1 7
3 5 2
int datos[3][3];
El arreglo defnido es de tipo entero y consta de 3 flas y 3 columnas y su identifcador es datos.
Estrategia:
Puede consultar el apartado 1.5 de la gua didctica.
3. Escriba el cdigo 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 cdigo es:
5 6 9
10 1 7
3 5 2
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
59
Gua didctica: Estructura de Datos SOLUCIONARIO
Estrategia:
Consulte el apartado 9.4.4 del texto base especialmente el ejercicio 9.5. datos es la matriz, defnida en
el punto 1
4. Escriba el cdigo para obtener los elementos de la diagonal principal de la matriz declarada
y pselos a un arreglo unidimensional.
int diagonal[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 grfcamente el arreglo unidimensional del punto anterior ordenado de forma
ascendente y forma descendente.
Orden ascendente:
1 2 5
Orden descendente:
5 2 1
Parte B:
6. Cul 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 gua didctica.
7. Indique una forma de inicializar un arreglo
int datos[3][3] = {5, 6, 9, 10, 1, 7, 3, 5, 2}
Estrategia: Revise el apartado 1.1 y 1.5 de la gua didctica.
Gua didctica: Estructura de Datos
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
60
SOLUCIONARIO
9. Escriba los pasos que sigue el algoritmo de seleccin.
Su funcionamiento es el siguiente:
Buscar el mnimo elemento de la lista
Intercambiarlo con el primero
Buscar el mnimo en el resto de la lista
Intercambiarlo con el segundo
Y en general:
Buscar el mnimo elemento entre una posicin i y el fnal de la lista
Intercambiar el mnimo con el elemento de la posicin i
Estrategia: Revise el apartado 10.3 del texto base. Adems en el anexo 2 se indica la codifcacin de la
aplicacin del algoritmo de ordenacin por seleccin.
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
61
Gua didctica: Estructura de Datos SOLUCIONARIO
8.2. Autoevaluacin 2
1. Escriba una V si considera que la afrmacin es VERDADERA o una F si la considera FALSA.
1 V
2 V
3 V
4 F
5 F
6 V
7 F
8 F
9 F
10 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 solucin
de este ejercicio est en el anexo 5 de sta gua.
4) Sobre la lista creada en el punto 1, encuentre el dato del nodo 5.
int BuscarNodo (Nodo *Siguiente, int valor){
int encontrado = 0;
while (siguiente != NULL){
if (Siguiente->Datos == valor){
encontrado = 1;
Siguiente = NULL;
}
else
Siguiente = Siguiente->Enlace;
}
return encontrado;
}
En la codifcacin se presenta la funcin 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.
Gua didctica: Estructura de Datos
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
62
SOLUCIONARIO
8.3. Autoevaluacin 3
1. Escriba una V si considera que la afrmacin es VERDADERA o una F si la considera FALSA.
1 V
2 V
3 V
4 F
5 V
6 F
7 V
8 V
9 V
10 V
2. Dado el siguiente rbol.
Indique lo siguiente:
Padres: F, G, H, P, O, J
Hijos: G, H, P, N, F, J, Q, A, O, V, S
Hojas: Q, A, S, F, V
Hermanos: {G, H}, {P, N}, {F, J}, {Q, A}
Profundidad: 5
Estrategia: Para resolver este ejercicio es necesario revisar el apartado 3.2 de la gua didctica.
3. Construir un rbol binario de bsqueda 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.
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
63
Gua didctica: Estructura de Datos SOLUCIONARIO
4. Del rbol binario de bsqueda del ejercicio anterior, realice lo siguiente:
Recorrido Preorden: 50, 25, 10, 40, 42, 75, 60, 70, 90
Recorrido Enorden: 10, 25, 40, 42, 50, 60, 70, 75, 90
Recorrido 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 captulo de la gua como en el apartado 20.6 del texto base.
Gua didctica: Estructura de Datos
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
64
SOLUCIONARIO
8.4. Autoevaluacin 4
3. Escriba una V si considera que la afrmacin es VERDADERA o una F si la considera FALSA.
1 V
2 V
3 V
4 V
5 V
6 V
7 V
8 V
9 F
10 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. Cuando ingrese los caracteres desde teclado para fnalizar deber presionar Crtl+Z luego enter.
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){
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
65
Gua didctica: Estructura de Datos SOLUCIONARIO
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.
Gua didctica: Estructura de Datos
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
66
SOLUCIONARIO
8.5. Autoevaluacin 5
1. Escriba una V si considera que la afrmacin es VERDADERA o una F si la considera FALSA.
1 V
2 V
3 F
4 F
5 V
6 V
7 F
8 V
9 V
10 V
2. Realizar un Grafo a partir de las defniciones que se realizan a continuacin
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)}
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
67
Gua didctica: Estructura de Datos ANEXOS
Anexo 1
Ordena los elementos de un arreglo utilizando el mtodo burbuja.
Programa codificado en C, que permite ingresar 5 elementos desde teclado y aplicando uno de los
mtodos de ordenacin burbuja permite presentar la lista ordenada en forma ascendente. El mtodo en
el cual se aplica el algoritmo se denomina OrdenarBurbuja.
El presente material ha sido reproducido con fnes netamente didcticos, cuyo objetivo es
brindar al estudiante mayores elementos de juicio para la comprensin de la materia, por
lo tanto no tiene fn comercial.
D
I
C
T
I
O
N
A
R
Y
T
H
E
S
A
U
R
U
S
Gua didctica: Estructura de Datos
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
68
ANEXOS
Anexo 2
Ordena los elementos de un arreglo utilizando el mtodo por seleccin.
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 seleccin y se implementa
Ordenar seleccin.
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
69
Gua didctica: Estructura de Datos ANEXOS
Anexo 3
Ordena los elementos de un arreglo utilizando el mtodo de insercin.
Programa en C, que permite ordenar una lista de 10 elementos aplicando el mtodo de insercin. El
mtodo que implementa el algoritmo es Orden Insercin.
Gua didctica: Estructura de Datos
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
70
ANEXOS
Anexo 4
Programa que permite realizar una bsqueda aplicando el algoritmo de bsqueda secuencial
Programa codificado en C, que permite aplicar el mtodo de bsqueda secuencial en un arreglo de 5
elementos.
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
71
Gua didctica: Estructura de Datos ANEXOS
Anexo 5
Permite realizar bsqueda binaria en arreglos.
Gua didctica: Estructura de Datos
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
72
ANEXOS
Anexo 6
Permite crear una lista enlazada, crea los nodos y le asigna valores a dichos nodos.
//libreras bsicas para programar en C.
#include <stdio.h>
#include <stdlib.h>
//declaracin de una estructura que contiene al puntero
struct Elemento {
int informacion;
struct Elemento* Siguiente; //declaracin de puntero siguiente.
};
typedef struct Elemento Nodo;
void presentar(Nodo* cab); //declaracin de mtodo presentar que recibe como parmetro un
//puntero.
main() {
int dato;
Nodo* pCabeza; //declaracin de un puntero del tipo Nodo declarado en la estructura
Nodo* p; //declaracin de un puntero del tipo Nodo declarado en la estructura
Nodo* aux; //declaracin de un puntero del tipo Nodo declarado en la estructura
pCabeza = malloc(sizeof(Nodo)); //asignacin dinmica de memoria al puntero
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 informacin se asigna el dato
//ingresado
(*pCabeza).Siguiente = NULL; //el puntero siguiente apunta a null o vacio.
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 informacin 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);
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
73
Gua didctica: Estructura de Datos ANEXOS
}
void presentar(Nodo* cab){
Nodo* p = NULL;
p = cab;
while (p != NULL) {
printf(%d, , (*p).informacion);
p = (*p).Siguiente;
}
}
Gua didctica: Estructura de Datos
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
74
ANEXOS
Anexo 7
Crea la estructura de una lista enlazada le aade valores a los nodos y presenta la lista enlazada.
#include <stdio.h>
struct Elemento {
int informacin;
struct Elemento* Siguiente;
};
typedef struct Elemento Nodo;
main() {
int dato;
Nodo* pCabeza;
Nodo* p;
Nodo* aux;

pCabeza = malloc(sizeof(Nodo));
printf(Ingrese la informacin del nodo: );
scanf(%d, &dato);
pCabeza->informacion = dato;
pCabeza->Siguiente = NULL;
p = pCabeza;
do {
printf(Ingrese la informacin 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->informacin);
p = p->Siguiente;
}
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
75
Gua didctica: Estructura de Datos ANEXOS
}
Anexo 8
Permite crear una lista doblemente enlazada, ingresa los valores correspondientes a los nodos y luego
presenta la informacin de los nodos.
#include <stdio.h>
#include <stdlib.h>
struct Elemento {
int informacin;
struct Elemento* Anterior;
struct Elemento* Siguiente;
};
typedef struct Elemento Nodo;
void presentar(Nodo* cab);
void presentar2(Nodo* final);
main() {
int dato;
Nodo* pCabeza;
Nodo* p;
Nodo* aux;

pCabeza = malloc(sizeof(Nodo));
printf(Ingrese la informacin del nodo: );
scanf(%d, &dato);
(*pCabeza).informacin = dato;
(*pCabeza).Siguiente = NULL;
(*pCabeza).Anterior = NULL;
p = pCabeza;
do {
printf(Ingrese la informacin del nodo: );
scanf(%d, &dato);
if (dato != -1) {
aux = malloc(sizeof(Nodo));
(*aux).informacin = 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);
}

Gua didctica: Estructura de Datos
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
76
ANEXOS
void presentar(Nodo* cab){
Nodo* p = NULL;
p = cab;
while (p != NULL) {
printf(%d, , (*p).informacin);
p = (*p).Siguiente;
}
}
void presentar2(Nodo* final){
Nodo* p = NULL;
p = final;
while (p != NULL) {
printf(%d, , (*p).informacin);
p = (*p).Anterior;
}
}
DAGC-GERC/ymtene/14-07-2011/68
LFMA/2013-01-02/76

Anda mungkin juga menyukai