Professional Documents
Culture Documents
PRELIMINARES
MODALIDAD ABIERTA Y A DISTANCIA
BIMESTRE
PRIMER
Estructura de Datos
Guía didáctica
SEGUNDO
BIMESTRE
5 créditos
SOLUCIONARIO
ANEXOS
Titulación
Ciclo
MULTIMEDIA
RECURSOS
3 ¡ Informática
ÍNDICE
PRELIMINARES
UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA
La Universidad Católica de Loja
BIMESTRE
PRIMER
Sección Inteligencia Artificial
SEGUNDO
BIMESTRE
Estructura de Datos
SOLUCIONARIO
Guía didáctica
5 créditos
ANEXOS
Titulación Ciclo
¡ Informática III
MULTIMEDIA
Autores: RECURSOS
Daniel Alejandro Guamán Coronel
Guido Eduardo Riofrío Calderón
Reestructurado por:
Manuel Eduardo Sucunuta España
Asesoría virtual:
18308 www.utpl.edu.ec
ÍNDICE
PRELIMINARES
BIMESTRE
PRIMER
SEGUNDO
BIMESTRE
SOLUCIONARIO
ESTRUCTURA DE DATOS
Guía didáctica
ANEXOS
Diseño, maquetación e impresión:
Ediloja Cía. Ltda.
Telefax: 593 - 7 - 2611418
San Cayetano Alto s/n
www.ediloja.com.ec
edilojainfo@ediloja.com.ec
MULTIMEDIA
RECURSOS
Loja-Ecuador
Segunda edición
Décima reimpresión
ISBN - 978-9942-00-723-0
Segunda edición
Esta versión 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 públicamente la obra, mientras se reconozca la autoría original, no se utilice con fines comerciales ni se realicen
obras derivadas. http://www.creativecommons.org/licences/by-nc-nd/3.0/ec/
03 de Septirmbre, 2012
ÍNDICE
PRELIMINARES
2. Índice
2. Índice.................................................................................................................................................................. 4
3. Introducción................................................................................................................................................... 6
BIMESTRE
PRIMER
4. Lineamientos generales del Modelo Educativo basado en competencias y
créditos académicos UTPL- ECTS......................................................................................................... 7
4.1. Competencias genéricas........................................................................................................................... 8
4.2. Competencias específicas......................................................................................................................... 8
5. Bibliografía..................................................................................................................................................... 9
SEGUNDO
BIMESTRE
5.1. Básica........................................................................................................................................................... 9
5.2. Complementaria........................................................................................................................................ 9
Direcciones Electrónicas.................................................................................................................................... 9
6. Orientaciones generales para el estudio...................................................................................... 11
7. Proceso de enseñanza-aprendizaje para el logro de competencias............................ 13
SOLUCIONARIO
PRIMER BIMESTRE
ANEXOS
Unidad 1: ESTRUCTURAS LINEALES ESTÁTICAS (ARREGLOS).................................................................................. 16
1.1. Arreglos....................................................................................................................................................... 16
1.2. Operaciones con arreglos........................................................................................................................... 20
1.3. Búsqueda.................................................................................................................................................... 22
MULTIMEDIA
1.4. Operaciones adicionales con arreglo.......................................................................................................... 23
RECURSOS
1.5. Arreglos de dos dimensiones...................................................................................................................... 25
Autoevaluación 1................................................................................................................................................... 26
2.1. Apuntadores................................................................................................................................................ 28
2.2. Estructura de datos dinámicas................................................................................................................... 30
2.3. Listas enlazadas......................................................................................................................................... 30
2.4. Clasificación de las listas enlazadas.......................................................................................................... 31
2.5. Operaciones con listas enlazadas.............................................................................................................. 32
Autoevaluación 2................................................................................................................................................... 35
ÍNDICE
SEGUNDO BIMESTRE
PRELIMINARES
7.2. Planificación para el trabajo del alumno............................................................................................ 36
7.4. Orientaciones específicas para el aprendizaje por competencias.................................................. 37
3.1. Árboles........................................................................................................................................................ 37
BIMESTRE
3.2. Terminología............................................................................................................................................... 38
PRIMER
3.3. Aplicaciones de los árboles........................................................................................................................ 40
3.4. Árboles binarios.......................................................................................................................................... 40
3.5. Recorridos en árboles binarios................................................................................................................... 41
3.6. Árboles binarios de búsqueda.................................................................................................................... 42
Autoevaluación 3................................................................................................................................................... 43
SEGUNDO
BIMESTRE
Unidad 4: ARCHIVOS.............................................................................................................................................. 45
SOLUCIONARIO
4.4. Abrir un archivo.......................................................................................................................................... 47
4.5. Escribir datos.............................................................................................................................................. 47
4.6. Leer datos................................................................................................................................................... 48
4.7. Cerrar el archivo.......................................................................................................................................... 48
Autoevaluación 4................................................................................................................................................... 49
Unidad 5: GRAFOS................................................................................................................................................. 50
ANEXOS
5.1. Componentes de un grafo.......................................................................................................................... 51
5.2. Definiciones................................................................................................................................................ 52
5.3. Representación........................................................................................................................................... 53
Autoevaluación 5................................................................................................................................................... 55
MULTIMEDIA
RECURSOS
8. Solucionario................................................................................................................................................... 57
9. Anexos............................................................................................................................................................... 66
10. Recursos Multimedia................................................................................................................................. 76
ÍNDICE
Guía didáctica: Estructura de Datos
3. Introducción
PRELIMINARES
“Estructura de Datos” es una asignatura con 5 créditos, forma parte del grupo de materias troncales de
carrera de la malla de Ingeniería en Informática de la Escuela de Ciencias de la Computación, modalidad
Abierta y a Distancia de la UTPL.
BIMESTRE
PRIMER
Con los contenidos de la asignatura se pretende cubrir los conocimientos básicos de las estructuras de
datos desde la perspectiva computacional, de tal forma que al construir una aplicación, sus programas
se diseñen acorde al contexto del problema; escogiendo las estructuras necesarias, con algoritmos
eficientes y eficaces que garanticen el correcto funcionamiento de una solución informática.
Múltiples son los estructuras y diversas las alternativas de solución, por lo que el estudiante podrá elegir
SEGUNDO
BIMESTRE
la mas apropiada que le permita optimizar los recursos computacionales como es: memoria, procesador
y medios de almacenamiento. Hoy en día los diversos lenguajes de programación facilitan el uso e
implementación de las estructuras de datos, al incorporar componentes mucho mas fáciles de manejar
desde el punto de vista de la programación. Sin embargo la esencia conceptual de cada estructura sigue
siendo el mismo, por lo que para realizar la parte teórica se a escogido como lenguaje de programación
SOLUCIONARIO
“C” en cualquiera de las versiones.
La temática que abarca la asignatura ha sido estructurada en 5 unidades, distribuidas en 2 para el primer
bimestre y 3 para el segundo bimestre.
Para el primer bimestre: la primera unidad comprende el análisis de las estructuras lineales estáticas
ANEXOS
implementadas con arreglos. En la segundad unidad se realiza el análisis de las estructuras de datos
dinámicas, concretamente con lo que se refiere a apuntadores y listas enlazadas.
Para el segundo bimestre, se realiza un análisis de las estructuras de datos no lineales, por lo que en la
tercera unidad se abarca el tema de los árboles específicamente con las operaciones que se realizan
MULTIMEDIA
RECURSOS
en los árboles binarios. La unidad cuatro se enfoca a la forma de almacenar información en archivos,
y finalmente en la unidad cinco se realiza un análisis general de los grafos, tanto dirigidos como no
dirigidos.
Recuerde señor estudiante que el proceso requiere de su esfuerzo y dedicación de su parte, y cualquier
inquietud que tenga no dude en hacérmelo conocer ya que estaré junto a usted para acompañarle y
orientarle en el proceso de aprendizaje.
PRELIMINARES
Sr. Estudiante recuerde que usted ha iniciado su formación de tercer nivel con un sistema educativo
basado en el desarrollo de competencias a través de créditos académicos. Este modelo le convierte
a usted en protagonista de su propia formación y al profesor en mediador de las experiencias de
aprendizaje.
BIMESTRE
PRIMER
Surge entonces la necesidad de que tenga claro dos conceptos fundamentales competencia y crédito
académico.
SEGUNDO
BIMESTRE
experiencias laborales y, que se ponen de manifiesto en el desempeño de la actividad profesional.
Las competencias se adquieren a lo largo del proceso formativo de la carrera y se desagregan en
objetivos de aprendizaje propuestos en cada asignatura.
Elementos de una competencia. Tres son los elementos que podemos distinguir en toda
SOLUCIONARIO
competencia:
¸ Habilidades: son destrezas para ejecutar con éxito tareas, utilizar procedimientos y realizar
trabajos. Se desarrollan a través de la práctica y la experiencia.
ANEXOS
¸ Conocimientos: constituyen los contenidos científicos, conceptuales, teóricos, conocidos también
como el aprendizaje académico.
MULTIMEDIA
RECURSOS
Un crédito académico es la unidad de medida del trabajo del estudiante, implica 32 horas de trabajo del
alumno (29 horas de trabajo autónomo y 3 horas de interacción) 1.
Los créditos académicos que el estudiante irá acumulando en el transcurso de la carrera involucran:
aprendizaje autónomo (estudio personal), tareas de investigación, interacción en el Entorno Virtual de
Aprendizaje (EVA), participación en tutorías, videoconferencias y otros eventos académicos (Jornadas,
seminarios, cursos, congresos avalados por la UTPL), prácticas académicas, pasantías preprofesionales
y de vinculación con la colectividad; actividades de evaluación; así como la realización del trabajo de
titulación.
El modelo adoptado por la UTPL contempla dos tipos de competencias: genéricas y específicas.
1 CONESUP (2008): Reglamento del Régimen Académico del Sistema Nacional de Educación Superior, art. 18.
PRELIMINARES
• Estructura general del programa formativo
Las Unidades Académicas o Escuelas de la UTPL han estructurado el programa formativo contemplando
cinco ámbitos o bloques de asignaturas: Formación Básica (10%); Genéricas de carrera (15%); Troncales
(35%) Complementarias (10%); Libre configuración (10%) y además, el Practicum que comprende las
Pasantías preprofesionales y de vinculación con la colectividad y Practicum Académico (20%).
BIMESTRE
PRIMER
4.1. Competencias genéricas
SEGUNDO
BIMESTRE
- Habilidades para buscar, procesar y analizar información procedente de fuentes diversas.
- Capacidad de aplicar los conocimientos.
- Capacidad para identificar, plantear y resolver problemas.
- Capacidad creativa e innovadora.
- Capacidad para tomar decisiones.
SOLUCIONARIO
- Capacidad de trabajo en equipo.
- Habilidades interpersonales.
- Compromiso con la calidad.
- Capacidad para formular, diseñar y gestionar proyectos.
- Compromiso ético.
ANEXOS
Estas competencias se encuentran detalladas en la planificación de cada bimestre.
MULTIMEDIA
RECURSOS
5. Bibliografía
PRELIMINARES
5.1. Básica
BIMESTRE
PRIMER
datos. Madrid-España: McGrawHill.
Los autores de esta obra tienen una amplia experiencia en temas relacionados con el diseño de
algoritmos, desarrollo de programas y en varios lenguaje de programación. El texto se ha seleccionado
por cuanto utiliza como lenguaje de desarrollo C, que es un lenguaje que nos permite ir analizando
detenidamente las estructuras de datos que se analizarán; inicialmente el texto dispone de capítulos
SEGUNDO
BIMESTRE
que permiten conocer el lenguaje (c) y no tener problemas con el mismo.
5.2. Complementaria
• Joyanes, L.; Castillo, A.; Sánchez, L.; Zahonero, I. (2005). C. Algoritmos, programación y estructuras
SOLUCIONARIO
de datos. Madrid-España: McGrawHill. Serie Schawum.
Es un texto donde los autores enfocan el estudio en base a ejercicios y problemas que plantean
una solución, para su análisis. También se plantean ejercicios propuestos que el estudiante los
podría resolver.
ANEXOS
• KOFFMAN Elliot B., WOLFGANG Paul, (2008) Estructura de datos con C++, México, Editorial Mc
Graw Hill.
El presente libro contiene información y ejercicios, relacionados con listas, arreglos, objetos los
cuales se estudian a lo largo del presente período.
MULTIMEDIA
RECURSOS
• JOYANES Luis, MARTINEZ Ignacio, AZUELA Matilde, GARCIA Lucas, (2005) Estructura de Datos en C,
España, Editorial Mc Graw Hill.
Es un texto muy didáctico que contiene ejercicios propuestos y resueltos referentes a los temas a
llevarse a cabo en el presente estudio como arreglos, colas, listas.
Texto que posee información de temática relacionado a las estructuras de datos e incluye ejercicios
desarrollados en C++.
Direcciones Electrónicas
PRELIMINARES
• Zator Systems (2008): Curso C++. [en línea]. Disponible en: http://www.zator.com/Cpp/E_Ce.htm
[consulta 09/09/2009]
Dirección que contiene amplias explicaciones con ejemplos sobre temas referentes a
programación en C.
BIMESTRE
PRIMER
• Pozo, S. (2001): Árboles B. [en línea]. Disponible en: http://articulos.conclase.net/arboles-b/
[consulta 09/09/2009]
SEGUNDO
BIMESTRE
• Biblioteca Virtual UTPL, www.utpl.edu.ec/biblioteca
SOLUCIONARIO
ANEXOS
MULTIMEDIA
RECURSOS
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 Ingeniería en Informática, constituye
BIMESTRE
PRIMER
una de las bases fundamentales para la formación del estudiante dentro de su área profesional, por lo
tanto, le ofrecemos algunas orientaciones de como aprovechar al máximo las diversas ayudas que se
incluyen en recursos didácticos como:
1) La guía didáctica:
SEGUNDO
BIMESTRE
Le permitirá orientarse sobre los temas a estudiar, además contiene ejercicios de autoevaluación
que le permitirán medir su grado de comprensión. Por lo tanto lea detenidamente la Guía Didáctica,
ya que en ella se encuentran las indicaciones que guiarán su autoaprendizaje
2) El texto básico:
SOLUCIONARIO
En este texto se encuentran los contenidos que se van a tratar en la presente asignatura, su uso
esta restringido a la guía didáctica, esto es, que deberá acudir a la guía didáctica para saber cuales
son los temas que deberá abordar. Por ello, se recomienda trabajar en forma paralela la guía con
el texto básico.
ANEXOS
3) El entorno virtual de aprendizaje (EVA):
Es un espacio donde podrá compartir con sus compañeros y con su profesor mediante mensajes,
anuncios, foros, tareas, etc. Además su interacción en este medio es obligatorio, ya que como
estudiante de ésta área es un deber usar este tipo de recursos.
MULTIMEDIA
RECURSOS
4) Trabajos a distancia:
Son una estrategia de aprendizaje por tanto contando con todos los medios necesarios resuelva
los ejercicios y casos que allí se plantean. Además estos trabajos tienen una valoración de 6 puntos
con el tiempo suficiente para desarrollarlos.
5) Tutoría:
Es un tiempo semanal que como profesores dedicamos para atender las inquietudes en relación a
los contenidos o desarrollo de trabajos, para ello se publicará un horario en el cual podrán asistir
personalmente o contactarse vía telefónica, el mismo que se detalla en la carátula de la evaluación
a distancia.
1) El tiempo que dedique a la lectura y desarrollo de los ejercicios es fundamental, por lo tanto deberá
dedicar al menos 6 horas semanales. Puede apoyarse con técnicas como subrayado, cuadros
sinópticos y sobre todo mapas conceptuales.
2) Recuerde que cuenta con su profesor tutor para la comprensión de los temas, entonces la
PRELIMINARES
comunicación con el mismo será fundamental, para lo cual debe familiarizarse con las formas
de comunicación que tiene, ya sea por teléfono (consultar horario de tutoría), email, chat, y otras
herramientas tecnológicas. Recuerde además que existe una variada información en el internet,
bibliotecas digitales y también la documentación que su profesor le acerca a través del EVA.
3) Lea detenidamente la guía didáctica, ya que en ella se encuentran las indicaciones que guiarán
su autoaprendizaje. Revise y analice cada uno de los temas del texto básico y utilice técnicas de
BIMESTRE
PRIMER
estudio como el subrayado, resúmenes, cuadros sinópticos, mentefactos y/o cualquier estrategia
de aprendizaje que se adecue a su forma de aprender.
SEGUNDO
BIMESTRE
respuestas en el solucionario ubicado al final de la guía didáctica. El contenido científico para el
desarrollo de la evaluación a distancia usted lo encontrará en el texto básico y la guía didáctica.
Para poder ser ayudado en las diferentes temáticas por los profesores / tutores usted puede utilizar
medios como: correo electrónico, entorno virtual de aprendizaje (EVA), chat, línea telefónica.
SOLUCIONARIO
En la guía didáctica se incluyen algunas imágenes que sirven de focalizadores para iden-
tificar apropiadamente el texto, a continuación se indican:
Icono Descripción
Este ícono se usará para solicitarle la lectura de una sección del texto básico (Lecturas
ANEXOS
recomendadas, texto complementarios, OCW)
MULTIMEDIA
RECURSOS
Ejercicios y actividades recomendadas en toda la guía
Profundizar temas
Para indicar que existen anexos en los cuales se podrá ampliar el análisis o ejemplo.
PRELIMINARES
PRIMER BIMESTRE
BIMESTRE
PRIMER
7.1 Planificación para el trabajo del alumno
CRONOGRAMA
COMPETENCIAS OBJETIVOS DE CONTENIDOS ACTIVIDADES DE
ORIENTATIVO
ESPECÍFICAS APRENDIZAJE APRENDIZAJE
Unidades/Temas Tiempo estimado
SEGUNDO
BIMESTRE
Analizar las necesidades • Reconoce el tipo de estructura UNIDAD 1: Semana 1, 2 y 3. Revisión de los
de conocimiento estática lineal a utlizar en la capítulos preliminares
1.1 Arreglos 18 horas de
necesarias para resolver solución de un determinado del texto base
autoestudio
un problema. problema. 1.2 Operaciones con Arreglos (capítulos 3, 4, 6 y 7).
12 horas de interacción
Comprender, analizar • Resuelve problemas de índole 1.3 Búsqueda Lectura del
con el EVA
y resolver problemas algebraico al utilizando capítulo 9 (Arrays)
SOLUCIONARIO
1.4 Arreglos de dos dimensiones
aplicando los métodos arreglos. y 10 (Algoritmos
de la ciencia y la 1.5 Autoevaluación 1 de ordenación
• Propone un método
ingeniería. y búsqueda) del
para ordenar una lista de
texto básico tal
Aplicar la lógica elementos de diferente tipo
como se indica en
matemática en el de datos.
la guía didáctica
contexto de las Ciencias
complementado con
de la Computación, con
las actividades de la
proyección, al diseño de
ANEXOS
unidad 1 de la guía
circuitos, programación,
didáctica
análisis y desarrollo de
algoritmos.
MULTIMEDIA
RECURSOS
Diseño e Desarrollo
implementación de la primera
PRELIMINARES
de programas de autoevaluación que
aplicación. se indica en la guía
didactica.
Diagnóstico y solución
de problemas en Realizar la interacción
software. en el EVA: foro
BIMESTRE
del texto básico tal
PRIMER
• Analiza la represetación de autoestudio
2.2 Estructura de datos dinámicas como se indica en
punteros en la memoría del
12 horas de interacción la guía didáctica
computador. 2.3 Listas enlazadas
con el EVA complementado con
• Identifica la forma de 2.4 Clasificación de las listas enlazadas las actividades de la
representar las estructuras de unidad 2 de la guía
2.5 Operaciones con listas enlazadas
datos dinámicas. didáctica
SEGUNDO
2.6 Autoevaluación 2
BIMESTRE
• Propone soluciones para crear Desarrollo de
y recorrer listas enlazadas la segunda
autoevaluación que
se indica en la guía
didactica.
Realizar la interacción
SOLUCIONARIO
en el EVA: foro
Analizar ejercicios
adicionales que se
indicarán en el EVA.
ANEXOS
autoestudio Desarrollo ejercicios
adicionales en el EVA
8 horas de interacción
MULTIMEDIA
RECURSOS
PRELIMINARES
2. Heteroevaluación
Evaluación a Distancia
1. Autoevaluación *
3. Coevaluación
Parte Objetiva
Evaluación
Presencial
Interacción
con el EVA
Parte de
BIMESTRE
PRIMER
Ensayo
Comportamiento ético X X X X X X
SEGUNDO
BIMESTRE
Esfuerzo e interés en los trabajos X X X X X X
Creatividad e iniciativa X
SOLUCIONARIO
Contribución en el trabajo colaborativo y de
Habilidades
equipo
ANEXOS
Investigación (cita fuentes de consulta) X X
MULTIMEDIA
RECURSOS
Máximo 1 punto (Completa
Actividades presenciales y
Estrategia de aprendizaje
en el EVA
Puntaje 2 4 6 14
TOTAL 20 puntos
Para aprobar la asignatura se requiere obtener un puntaje mínimo de 28/40 puntos, que equivale al 70%
Sr. estudiante:
Tenga presente que la finalidad de la valoración cualitativa es principalmente formativa; sin embargo,
en circunstancias especiales podría afectarle positiva o negativamente en su calificación cuantitativa.
PRELIMINARES
Unidad 1: ESTRUCTURAS LINEALES ESTÁTICAS (ARREGLOS)
BIMESTRE
PRIMER
Recursos educativos multimedia
SEGUNDO
BIMESTRE
Ordenación Ordenación
SOLUCIONARIO
Búsqueda Búsqueda
Los tipos de datos son uno de los elementos fundamentales para construir aplicaciones, por lo tanto en
este capítulo abordaremos el estudio de uno de los tipos de datos compuestos como son los arreglos.
ANEXOS
Para trabajar con estas estructuras de datos es necesario tener algunos conocimiento previos, como es:
MULTIMEDIA
RECURSOS
• Uso de estructuras secuenciales, condicionales y repetitivas
1.1. Arreglos
Una vez que cuenta con los conocimientos previos es hora de empezar con el estudio de los arreglos
para utilizarlos en ejercicios comunes de tratamiento de información a nivel de listas.
Revise el apartado 9.1. Arrays del texto base. Recalque su análisis en la forma de
declarar, de definir el tamaño, los subíndices y el almacenamiento en memoria.
PRELIMINARES
Puede utilizar la técnica del subrayado, esto ayudará a lograr una mejor
comprensión del tema.
Ahora que ya tiene claro el concepto de los arreglos es conveniente asociar esta estructura con los
problemas que se desea solucionar. En términos generales un arreglo lo podemos utilizar en todos
aquellos casos en los que se desea trabajar con un conjunto de elementos, y que para hacer referencia a
BIMESTRE
estos datos se lo hace a través de un sólo identificador, pero por supuesto para acceder a cada elemento
PRIMER
se lo realiza mediante un índice.
• Finitos: todo arreglo tiene un límite, debe determinarse cuál es el número máximo de elementos
SEGUNDO
BIMESTRE
que podrán formar parte del arreglo.
• Homogéneos: todos los elementos de un arreglo son del mismo tipo de dato, es decir: enteros,
string, char, double, etc., pero nunca una combinación de mas de un tipo.
SOLUCIONARIO
• Ordenados: se puede determinar cuál es el primer, segundo, tercer, enésimo elemento.
Además recordemos que los arreglos pueden ser de varios tipos, destacando los siguientes:
ANEXOS
• Tres o más dimensiones.
MULTIMEDIA
RECURSOS
ces serán desde 0 al 9, muchas de las veces se tiende a confundir la posición de
cierto elemento por ésta situación.
En la figura 1.1 se representa un arreglo unidimensional con las edades de un grupo de 10 personas.
edades 45 37 39 29 31 48 45 35 32 51
0 1 2 3 4 5 6 7 8 9
índices
• Cada uno de los elementos se los identifica a través de el índice. Por ejemplo: en el subíndice 3 del
arreglo se encuentra el elemento 29, que sería el cuarto elemento de la lista.
PRELIMINARES
int edades[10];
Al hacer esta definición, en la memoria del computador se reserva el espacio de memoria de cierto
tamaño (esto dependerá de la longitud de palabra del procesador). En el supuesto caso que el tipo de
dato int ocupe dos bytes, el espacio de memoria para la definición anterior sería de 20 bytes. Se puede
utilizar el operador sizeof para saber cuantos bytes ocupa el arreglo, se puede utilizar con la siguiente
instrucción:
BIMESTRE
PRIMER
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
SEGUNDO
BIMESTRE
una fuente externa (a la aplicación), que puede ser desde la consola o de algún medio de almacenamiento
e incluso desde alguna librería o programa.
Finalizado el presente apartado se plantean ejercicios que permiten afianzar los conocimientos, por
SOLUCIONARIO
lo que deberá realizar el respectivo análisis y desarrollo basándose en los contenidos anteriormente
tratados.
Ejercicio 1.1
ANEXOS
1) Indique ejemplos en los cuales considera se aplica arreglos en la vida cotidiana.
2) Defina un índice y un elemento de un arreglo unidimensional.
3) Si tuviéramos un arreglo de caracteres con el texto “ESTRUCUTRA” ¿cuál sería el índice de la letra
“T”?.
MULTIMEDIA
RECURSOS
Ejercicio 1.2
Un curso de Computación tiene 50 alumnos matriculados, si Ud. tuviese que diseñar un arreglo para
registrar las notas de los alumnos responda lo siguiente utilizando la programación en C/C++:
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:
PRELIMINARES
Ejercicio 1.4
Cuál es el resultado de la ejecución del siguiente programa en C/C++ que utilice funciones de la librería
“string.h” para manipular cadenas de texto.
BIMESTRE
PRIMER
#include <stdio.h>
#include <string.h>
#include <ctype.h>
char cadena0[100];
SEGUNDO
BIMESTRE
char cadena1[ ]=”Universidad”;
char cadena2[ ]=”Loja”;
char cadena3[ ]=”Tecnica de”;
char cadena4;
SOLUCIONARIO
int i;
main(){
printf(“El contenido de la cadena1 es:%s\n\n“,cadena1);
printf(“El tamaño del arreglo cadena1 es:%d\n\n“,sizeof(cadena1));
printf(“El tamaño de la cadena de texto es:%d\n\n”,strlen(cadena1));
printf(“El resultado de la concatenacion es:%s\n\n”,strcat(cadena1, cadena2));
cadena4 = strpbrk(cadena1, “L“);
ANEXOS
strncpy(cadena0,cadena1,11);
strcat(cadena0,cadena4);
for (i=0; i<strlen(cadena0);i++){
cadena0[i] = toupper(cadena0[i]);
}
MULTIMEDIA
RECURSOS
printf(“%s\n\n“,cadena0);
scanf(“\n”);
}
Resultado:
PRELIMINARES
Líneas de la 1 a la 4 Librerías necesarias para trabajar con funciones tipo string y para
presentar los datos en pantalla y poder leerlos.
Líneas de la 6 a la 9 En estas líneas se declaran los arreglos de tipo de dato char para
almacenar las cadenas de texto.
Línea 10 En C/C++ una cadena también puede ser declarada como un
BIMESTRE
PRIMER
puntero a char en este caso las funciones de manipulación de
string interpretan a un dato de este tipo hasta encontrar en primer
carácter nulo.
Líneas 14 a la 17 En la primera línea se determina cuantos elementos tiene la
estructura desde el punto de vista de un arreglo, como se podrá
SEGUNDO
BIMESTRE
dar cuenta el valor retornado es 12, es decir uno más del total de
letras que tiene la cadena, esto se debe a que en el arreglo se toma
en cuenta el carácter nulo que existe al final de todo el string. En la
segunda línea se utiliza las funciones de string, por lo tanto estas
funciones no toman en cuenta el dato nulo como parte de una
SOLUCIONARIO
cadena de caracteres.
Líneas 18 a la 24 La función strcat se utiliza para concatenar cadenas, la función
strpbrk divide un string en base a un carácter determinado y
retorna el string que está después de dicho caracter.
ANEXOS
1.2. Operaciones con arreglos
Bien, una vez que hemos estudiado los aspectos fundamentales de los arreglos vamos a revisar algunos
algoritmos y técnicas para manipular los datos de estas estructuras, es importante que ponga especial
atención a estos algoritmos ya que los mismos son la base para desarrollar y resolver aplicaciones
MULTIMEDIA
específicas en programación utilizando cualquier lenguaje de programación.
RECURSOS
Dentro de las operaciones que intervienen en los arreglos constan: lectura/escritura, asignación,
actualización, ordenación y búsqueda; las operaciones como declaración, lectura y asignación de datos
ya se estudiaron en los ejercicios anteriores que usted realizó; ahora conviene revisar los temas de
búsqueda, ordenación.
Antes de abordar estos temas es necesario que estudie en el texto básico los temas relacionados a
Algoritmos de Ordenación y Búsqueda los mismos que le ayudarán a comprender de mejor manera lo
que se pretende en este capítulo.
La ordenación, clasificación de datos (en inglés, sort) es una operación que consistente en disponer
un conjunto de datos en un orden con respecto a un criterio del conjunto. Una lista se dice que está
ordenada por la clave k si la lista está en orden ascendente o descendente con respecto a esta clave.
PRELIMINARES
• y se dice que está en orden descendente si:
i>j implica que k[i]<=k[j]
Finalizado el presente apartado se plantean ejercicios que permiten afianzar los conocimientos, por
BIMESTRE
PRIMER
lo que deberá realizar el respectivo análisis y desarrollo basándose en los contenidos anteriormente
tratados.
Ejercicio 1.5
SEGUNDO
BIMESTRE
Ordene de forma ascendente y de forma descendente lo siguiente:
SOLUCIONARIO
2) Análisis matemático, Cálculo, Sistemas, Computación, Análisis Financiero, Fundamentos de la
programación, Fundamentos de algoritmia.
ANEXOS
elementos. Preste una especial atención a esta demostración ya que en si es el desarrollo del algoritmo.
MULTIMEDIA
RECURSOS
Ejercicio 1.6
45 37 39 29 31
2) Realice una ejecución manual con la codificación del algoritmo de la burbuja que se presenta en
el texto base en la página 355.
Ejercicio 1.7
PRELIMINARES
Dado el siguiente arreglo:
48 45 35 32 51
BIMESTRE
1) Realice la secuencia de ordenamiento aplicando el algoritmo por selección (apóyese en el ejemplo
PRIMER
de la página 357 del texto base).
2) Realice una ejecución manual con la codificación del algoritmo por selección que se presenta en
el texto base en la página 358
SEGUNDO
BIMESTRE
En el Anexo 2, se encuentra un programa que permite ordenar los elementos de
un arreglo utilizando el algoritmo por selección.
SOLUCIONARIO
Ejercicio 1.8
1) Realice gráficamente como se insertarían cada uno de los elementos en el arreglo (apóyese en el
ANEXOS
ejemplo de la página 359)
2) Realice la ejecución manual con la codificación del algoritmo de inserción que se presenta en el
texto base en la página 360.
MULTIMEDIA
RECURSOS
En el Anexo 3, se encuentra un programa que permite ordenar los elementos de
un arreglo utilizando el algoritmo de inserción.
1.3. Búsqueda
Otra de las operaciones que se pueden realizar con los arreglos son las búsquedas, por ejemplo si dispone
de una nómina y desea encontrar determinado empleado entonces tiene que aplicar un algoritmo de
búsqueda adecuado. Las búsquedas pueden ser de dos formas: secuencial y binaria.
PRELIMINARES
en arreglos
Tome en cuenta que cuando elabora algoritmos de búsqueda está condicionado a verificar si un
elemento se encuentra o no en el arreglo, para ello se podría aplicar la siguiente sección de código.
encontrado = 0;
BIMESTRE
PRIMER
for {i=0; i<tamanioMaximo; i++)
if (datos[i] == valorBuscado){
encontrado = 1;
break;
}
SEGUNDO
Revise el apartado 10.7.1 Búsqueda binaria y 10.7.2 Algoritmo y codifi-
BIMESTRE
cación de la búsqueda binaria, del texto base. Analice detenidamente las
codificaciones de los algoritmos.
Con los arreglos ordenados utilizaremos la búsqueda binaria la misma que tiene como ventaja principal
SOLUCIONARIO
el tiempo de respuesta que se obtiene al momento de buscar un elemento en la lista.
Hablando de las búsquedas en arreglos, es común que surjan inquietudes tales como: ¿Cuáles son las
semejanzas y diferencias de la Búsqueda Binaria y Secuencial?, ¿Realizan el mismo proceso?, ¿Se utilizan
los mismos bucles?, por lo que es importante poner atención al análisis que se hace en el texto base al
final del apartado 10.7.3.
ANEXOS
En el Anexo 5 encontrará el programa que permite realizar la búsqueda binaria en
arreglos
MULTIMEDIA
RECURSOS
En los arreglos a mas de realizar el ordenamiento y búsquedas, se pueden realizar otras operaciones
como es: insertar, eliminar o modificar un elemento y los procesos difieren si estamos frente a un arreglo
cuyo elementos estén ordenados o desordenados.
Finalizado el presente apartado se plantean ejercicios que permiten afianzar los conocimientos, por
lo que deberá realizar el respectivo análisis y desarrollo basándose en los contenidos anteriormente
tratados.
Ejercicio 1.9
PRELIMINARES
Realice un algoritmo en C/C++ que permita realizar inserción de nuevos elementos al inicio y final del
arreglo. Tal como se indica a continuación:
Arreglo Original:
BIMESTRE
PRIMER
5 7 9 2 4
3 5 7 9 2 4
SEGUNDO
BIMESTRE
Insertar el número 10 al final
3 5 7 9 2 4 10
SOLUCIONARIO
• Inserción en arreglo ordenados
La inserción de nuevos elementos en arreglos ordenados debe realizarse exactamente en el lugar que
le corresponde de acuerdo al orden del mismo, a diferencia de los arreglos desordenados en el cual se
podía hacer al inicio, final o cualquier posición.
ANEXOS
• Modificación:
Modificar un elemento significa reemplazar el valor existente por un nuevo dato, para cumplir con
este propósito primeramente debemos buscar el elemento, para lo cual se puede utilizar la función de
MULTIMEDIA
búsqueda estudiada anteriormente (Secuencial) y asignarle el nuevo valor.
RECURSOS
5 7 9 2 Nuevo valor a
reemplazar por el 9 en la
5 7 8 2 4 posición 2 del arreglo.
• Eliminación:
El método de búsqueda es sobre el cual gira el proceso de eliminación ya que se debe buscar el dato a
eliminar y posteriormente mover el número que esta a la derecha del elemento eliminado. Recuerde que
al eliminar un elemento del arreglo la posición del cual se elimina queda vacío, por ende debe llenarse
dicho espacio.
Finalizado el presente apartado se plantean ejercicios que permiten afianzar los conocimientos, por
lo que deberá realizar el respectivo análisis y desarrollo basándose en los contenidos anteriormente
tratados.
Ejercicio 1.10
PRELIMINARES
Indique cuál es la diferencia o diferencias y semejanzas entre la búsqueda binaria y la búsqueda
secuencial en arreglos.
BIMESTRE
PRIMER
Luego de revisar los arreglos unidimensionales o de una dimensión (una sola fila con varias columnas),
con las operaciones que se pueden aplicar sobre estos ya podemos estudiar los arreglos de dos
dimensiones o matrices, la lógica de los programas que se aplican a las matrices no difieren mucho con
las estudiadas previamente y los que revisó en el texto básico, en este caso se debe tener en cuenta que
se aumenta un índice más y en consecuencia para recorrer la matriz se utilizan dos procesos o sentencias
SEGUNDO
de control repetitivas.
BIMESTRE
¿Cómo identificar los arreglos bidimensionales?, les proponemos algunos ejemplos: ¿Qué tienen en
común las tablas, las hojas de Excel y las matrices en matemáticas? ¿Ha identificado lo que tienen en
común?, pues si, lo común es que todos tienen filas y columnas, ahora en un arreglo bidimensional al
SOLUCIONARIO
igual que un arreglo unidimensional se tienen elementos e índices los cuales hacen referencia a la fila y
columna en la cual se encuentra dispuesto el mismo, a continuación en la figura 1.2 se presenta de forma
gráfica la estructura de una matriz.
COLUMNAS
Posición de un
0 1 3 elemento dentro
0 [0][0] [0][1] [0][2] [0][3] de la matriz,
FILAS
ANEXOS
1 [1][0] [1][1] [1][2] [1][3] posición fila1,
2 [2][0] [2][1] [2][2] [2][3] columna2.
3 [3][0] [3][1] [3][2] [3][3]
MULTIMEDIA
RECURSOS
Figura 1.2: Estructura Gráfica de una matriz
Junto con el texto básico y la complementaria que usted crea conveniente, en el capítulo relacionado a
arreglos bidimensionales, vamos a desarrollar algunos ejercicios que nos permitirán conocer algo más
acerca de los arreglos bidimensionales y sus capacidades en operaciones.
Recuerde que para declarar un arreglo de dos dimensiones de tipo entero y de tamaño de 4 filas por 5
columnas, se lo define de la siguiente manera:
int matriz[4][5];
Finalizado el presente apartado se plantea un ejercicio que permiten afianzar los conocimientos, por
lo que deberá realizar el respectivo análisis y desarrollo basándose en los contenidos anteriormente
tratados.
Ejercicio 1.11
PRELIMINARES
Diseñe y elabore un algoritmo en C/C++ que permita crear un arreglo de dimensión 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 básicos y
destrezas en el ámbito de las estructuras de datos estáticas, recuerde que si existe algún tema que aun
BIMESTRE
PRIMER
no está claro se puede comunicar con sus profesores / tutores a través del EVA, correo electrónico, línea
telefónica.
Hemos culminado el estudio de la primera unidad y es hora de realizar una autoevaluación para
identificar el avance de su aprendizaje, le invitamos a desarrollarla y le deseamos éxitos, recuerde que
SEGUNDO
puede comprobar sus respuestas con el solucionario ubicado al final de la guía didáctica.
BIMESTRE
Autoevaluación 1
SOLUCIONARIO
1. Escriba una V si considera que la afirmación es VERDADERA o una F si la considera FALSA.
ANEXOS
3) En el arreglo de texto AUTOEVALUACION, la letra ¨E¨ se encuentra en la posición 5. ( )
MULTIMEDIA
RECURSOS
elementos de tipo entero.
6) Los arreglos unidimensionales contienen n filas. ( )
Resuelva lo siguiente
PRELIMINARES
Parte A:
2. Declare un arreglo de orden “m x n”, puede ser tres filas y tres columnas. Se desea registrar la
siguiente matriz:
5 6 9
BIMESTRE
PRIMER
10 1 7
3 5 2
SEGUNDO
BIMESTRE
4. Escriba el código para obtener los elementos de la diagonal principal de la matriz declarada y
páselos a un arreglo unidimensional.
5. Presente gráficamente el arreglo unidimensional del punto anterior ordenado de forma ascendente
y forma descendente.
SOLUCIONARIO
Parte B:
ANEXOS
7. ¿Cuáles son las dos formas de inicializar una estructura?
MULTIMEDIA
Ir a solucionario RECURSOS
PRELIMINARES
Recursos educativos multimedia
BIMESTRE
PRIMER
Videoconferencia Diapositivas
En la presente unidad estudiaremos otro tipo de estructuras de datos, las mismas que presentan una gran
SEGUNDO
ventaja en cuanto se refiere a la flexibilidad de uso, si bien es cierto, el uso de arreglos nos ayuda mucho
BIMESTRE
en el desarrollo de aplicaciones, estos presentan la desventaja que se podría reservar más memoria de la
que se necesita o que en algún momento nos falte más de la reservada.
Hasta ahora hemos estudiado algunas de las operaciones que se realizan sobre estructuras de datos
SOLUCIONARIO
estáticas, es decir, que ocupan un valor fijo en memoria en el momento de compilación. A continuación
estudiaremos estructuras de datos dinámicas las mismas que se crean dinámicamente en el momento
de la ejecución del programa, esto se logra mediante el uso de punteros o apuntadores.
2.1. Apuntadores.
Bien, antes de continuar retomemos el estudio del texto básico para identificar algunos conceptos de
ANEXOS
interés e importancia en Punteros.
Revisemos ahora el capítulo 12 del texto base. Los apartados a revisar son: 12.1
Direcciones en memoria, 12.2 Concepto de puntero, 12.3 Punteros NULL y
void.
MULTIMEDIA
RECURSOS
En el texto básico se encuentran algunas definiciones de apuntadores, pues revisemos otra definición
que también explica el tema de punteros: “Un puntero es un tipo de dato simple que contiene la dirección
de una variable o estructura, en vez de un valor de dato como lo estudiamos con los arreglos”.
Tenga presente que los datos en punteros se almacenan en la memoria RAM en posiciones especificas, a
las mismas que se acceden mediante valores hexadecimales.
Bien, ¿hemos revisado la definición de lo que es un puntero? se podría encontrar más de una en la
bibliografía complementaria o en las referencias web. Ahora que ha revisado la teoría de punteros
revisemos gráficamente como podría representar un puntero:
n 850
Explicando la representación gráfica anterior, se puede decir que el valor de un puntero (p) es una
dirección(n). La dirección depende del estado de la computadora en la cual se ejecuta el programa.
PRELIMINARES
Está claro ¿qué es un puntero y cómo se representan en memoria los mismos?, les invito a que continuemos
el estudio de las estructuras de datos dinámicas las cuales empezamos en el siguiente apartado.
Finalizado el presente apartado se plantean ejercicios que permiten afianzar los conocimientos, por
lo que deberá realizar el respectivo análisis y desarrollo basándose en los contenidos anteriormente
tratados.
BIMESTRE
PRIMER
Ejercicio 2.1
SEGUNDO
Complete el cuadro explicando que es lo que realiza cada definición
BIMESTRE
int *ptr1; Puntero a un tipo de dato entero (int).
long *ptr2;
char *ptr3;
SOLUCIONARIO
float *f;
Ejercicio 2.2
ANEXOS
#include <stdio.h>
#include <stdlib.h>
MULTIMEDIA
void main(){
RECURSOS
int n = 10;
long *dato;
float *f;
int* p = &n;
int *q;
q = p;
printf(“n = %d\n“,n);
printf(“&n = %d:\n“,&n);
printf(“p = %d:\n“,p);
printf(“&p = %d:\n“,&p);
printf(“q = %d:\n“,q);
}
PRELIMINARES
Pasaremos a estudiar las estructuras de datos dinámicas, para ello es necesario revisar el texto básico.
Revisemos ahora el capítulo 13 del texto base. Los apartados a revisar son: 13.1
Gestión dinámica de memoria, 13.2 función de asignación de memoria
malloc().
Recuerde que la definición de un apuntador, se la realiza de la siguiente manera:
BIMESTRE
PRIMER
int *p;
Luego se debe asignar el respectivo espacio de memoria a la variable apuntador, especialmente cuando
se trabaja con tipos compuestos, como es el caso de las estructuras. La asignación de memoria sería
entonces:
SEGUNDO
BIMESTRE
P = (int*)malloc(sizeof(int))
Una vez revisada la parte teórica en el texto básico y apoyado en lo que usted puede consultar en la
bibliografía complementaria o web dispóngase a realizar los siguientes ejercicios.
SOLUCIONARIO
2.3. Listas enlazadas.
Una lista enlazada se conoce como una colección o secuencia de elementos que se encuentran dispuestos
uno tras otro en las que cada elemento se conecta con el siguiente elemento por un enlace o puntero.
ANEXOS
Revisemos ahora el capítulo 18 del texto base. Los apartados a revisar son: 18.1.
Fundamentos teóricos, 18.2. Clasificación de las listas enlazadas y 18.3.
Operaciones en listas enlazadas.
Para poder declarar y utilizar las listas, debería conocer cuales son los elementos que componen un
MULTIMEDIA
RECURSOS
puntero, ¿recuerda cuáles son?, revisemos el siguiente gráfico:
.
Es necesario diferenciar entre las dos entidades implicadas en el apuntamiento:
Para profundizar en los temas de listas enlazadas les invito a revisar la temática en el texto básico en la cual
se explica los elementos de las listas enlazadas como son enlaces, dirección de memoria, representación
PRELIMINARES
en memoria, etc., es necesario que revise los ejercicios resueltos que se indican en el mismo.
Ahora Bien, revisemos como vamos evolucionando en el estudio de las estructuras de datos dinámicas,
para ello desarrolle los siguientes ejercicios.
Ejercicio 2.3
BIMESTRE
PRIMER
Proponga 5 ejemplos de listas enlazadas que ud. pueda identificar en la vida diaria.
a) Vagones de un tren.
b) _________________
SEGUNDO
c) _________________
BIMESTRE
d) _________________
e) _________________
Ejercicio 2.4
SOLUCIONARIO
Represente gráficamente utilizando la estructura de las listas los vagones de un tren, por ejemplo
vagón1, vagón2, vagón3,…., vagón n.., ubique el nodo inicial, los nodos siguientes, el nodo final y el
enlace correspondiente.
ANEXOS
2.4. Clasificación de las listas enlazadas.
Dependiendo de los datos que se desea representar y forma en la que se va a interactuar se pueden
utilizar diferentes tipos. Es necesario revisar el texto base.
MULTIMEDIA
RECURSOS
Revise el apartado 18.2. Clasificación de las listas del texto base.
Es importante tener claro las cuatro categorías que se pueden implementar las listas enlazadas. A
continuación se indican gráficamente estas categorías
PRELIMINARES
• Lista circular doblemente enlazada
BIMESTRE
PRIMER
SEGUNDO
BIMESTRE
Finalizado el presente apartado se plantean ejercicios que permiten afianzar los conocimientos, por
lo que deberá realizar el respectivo análisis y desarrollo basándose en los contenidos anteriormente
tratados.
SOLUCIONARIO
Ejercicio 2.4
Mencione una descripción y características de cada una de las categorías de las cuatro listas enlazadas.
¿Cómo le fue en el desarrollo del ejercicio anterior?, esperemos que muy bien, sin embargo si tiene alguna
ANEXOS
dificultad en realizar el mismo le invitamos para que pueda contactarnos a través de correo electrónico,
EVA, u otro medio de comunicación, recuerde también apoyarse de la bibliografía complementaria que
Ud. crea conveniente.
Si recordamos un poco las estructuras de datos estática, habíamos hablado de operaciones que se
MULTIMEDIA
RECURSOS
realizaban sobre las mismas, ahora con el uso de listas vamos a revisar que operaciones podemos realizar
sobre las mismas.
Al igual que cuando revisamos la temática de arreglos cuando trabajamos con listas enlazadas podemos
realizar muchas operaciones, dentro de las cuales se destaca la creación, eliminación, lectura, inserción,
actualización, entre otras, revisaremos conjuntamente con el texto básico algunas de ellas.
Declaración de un nodo
En los capítulos anteriores tanto de la guía didáctica como del texto básico revisamos como declarar
un nodo ya que es lo primordial cuando se trabaja con listas y se realiza operaciones sobre las mismas,
recordemos dicha declaración con la cual empezamos el estudio de las operaciones en listas enlazadas,
revisemos la siguiente declaración.
class Nodo {
string valor;
PRELIMINARES
struct Nodo* enlace;
}
El poseer una declaración class, permitirá agrupar el tipo de dato y el apuntador o enlace al siguiente
nodo. En el texto básico encontrará una declaración similar y algunas adicionales para empezar a operar
sobre listas enlazadas.
BIMESTRE
PRIMER
Recuerde que en una lista enlazada siempre vamos a encontrar y definir dos nodos
los cuales son cabecera y cola.
SEGUNDO
BIMESTRE
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:
SOLUCIONARIO
1) Declarar el tipo de dato y puntero de cabeza.
3) Crear iterativamente el primer elemento (cabeza) y los elementos sucesivos de una lista enlazada.
ANEXOS
4) Repetir hasta que no haya mas entradas para el elemento.
En el Anexo 3 y 4 se propone un ejemplo de la creacion y lectura de las listas enlazadas, en base a éste
puede realizar las demás operaciones que se pueden llevar a cabo con punteros, le recomiendo en base
a la revisión del texto básico desarrollar los ejercicios de listas enlazadas y si tiene algún inconveniente
MULTIMEDIA
RECURSOS
no dude en ponerse en contacto con sus profesores / tutores.
Esperamos haya captado las ideas principales en lo relacionado a las listas enlazadas, este será el punto de
partida para poder entender y comprender las listas doblemente enlazadas que son parte fundamental
en las estructuras de datos dinámicas.
Como hemos evolucionado en el estudio de las listas enlazadas y una vez conocida su estructura,
definición y uso, podemos empezar con el estudio de las listas doblemente enlazadas, sin embargo
debemos empezar identificando las semejanzas y diferencias entre simplemente y doblemente
enlazadas, le invito a revisar el texto básico y la complementaria necesaria para luego desarrollar los
siguientes ejercicios de parte teórica.
Finalizado el presente apartado se plantean ejercicios que permiten afianzar los conocimientos, por
lo que deberá realizar el respectivo análisis y desarrollo basándose en los contenidos anteriormente
PRELIMINARES
tratados.
Ejercicio 2.5
Mencione una descripción y características de cada una de las categorías de las cuatro
En el siguiente cuadro ubique cuales son las diferencias y semejanzas entre listas enlazadas y listas
BIMESTRE
PRIMER
doblemente enlazadas, tome en cuenta también la forma de declaración, uso, lectura, etc.
DIFERENCIAS SEMEJANZAS
LISTAS ENLAZADAS
SEGUNDO
BIMESTRE
DIFERENCIAS SEMEJANZAS
LISTAS
DOBLEMENTE
ENLAZADAS
SOLUCIONARIO
Ejercicio 2.6
En la siguiente representación gráfica identifique los elementos que componen una lista doblemente
enlazada.
ANEXOS
Luego de haber realizado los ejercicios anteriores podemos empezar a estudiar los temas teóricos y
MULTIMEDIA
RECURSOS
prácticos que se plantean en el texto básico y también en la complementaria acerca de las listas
doblemente enlazadas, tal como lo habiamos hecho con las listas enlazadas en el Anexo 5 se propone
un ejemplo de declaración y lectura de listas doblemente enlazadas, con las cuales ya podemos empezar
a revisar las operaciones que se pueden realizar con las mismas.
Muy bien estimados estudiantes, esperamos que en la presente unidad la temática estudiada y analizada
haya sido de provecho para fortalecer y aumentar su conocimiento de las estructuras de datos, ahora les
invitamos a desarrollar la siguiente autoevaluación, la misma que permitirá conocer los vacíos que aun
podrían existir y que deberá revisarlos con más profundidad y concentración; si existiese alguna duda
o comentario contacte con sus profesores / tutores a través del EVA, correo electrónico, línea telefónica.
Autoevaluación 2
PRELIMINARES
1. Escriba una V si considera que la afirmación es VERDADERA o una F si la considera FALSA.
1. Una lista enlazada consta de un número de elementos y cada elemento tiene dos ( )
BIMESTRE
PRIMER
componentes (campos), un puntero al siguiente elemento de la lista y un valor,
que puede ser de cualquier tipo.
1. En las listas doblemente enlazadas, cada nodo tiene dos enlaces, uno a su nodo ( )
predecesor y el otro a su nodo sucesor.
2. Los punteros permiten un uso más eficiente de la memoria. ( )
SEGUNDO
BIMESTRE
3. El recorrido de una lista enlazada significa pasar solo por el nodo inicial y final de ( )
la lista.
4. Las listas son consideradas estructuras de datos estáticas. ( )
5. Las listas enlazadas están dispuestos uno a continuación de otro conectadas a ( )
SOLUCIONARIO
través de un puntero.
6. Las listas doblemente enlazadas contienen tres enlaces, uno que parte desde el ( )
nodo cabeza al siguiente nodo y otro que parte del nodo cabeza al anterior nodo.
7. Cuando una lista no contiene un nodo el puntero cabeza es nulo. ( )
8. El primer nodo de una lista enlazada se conoce como puntero cola. ( )
9. Una lista doblemente enlazada es una lista en la que cada nodo tiene un puntero ( )
ANEXOS
a su sucesor y otro a su predecesor.
1) Cree una lista enlazada en C/C++ que permita representar la secuencia 1,2,3,….10.
MULTIMEDIA
RECURSOS
1 2 3 4 10
2) Sobre la lista creada en el punto 1, indique la función qu permite encontrar el dato del nodo
5.
Ir a solucionario
PRELIMINARES
SEGUNDO BIMESTRE
CRONOGRAMA
CONTENIDOS
BIMESTRE
COMPETENCIAS OBJETIVOS DE ACTIVIDADES DE
PRIMER
ORIENTATIVO
ESPECÍFICAS APRENDIZAJE APRENDIZAJE
Unidades/Temas Tiempo estimado
Analizar las necesidades • Identifica los tipos UNIDAD 3: Semana 1 y 2 Lectura del capítulo 20(Árboles)
de conocimiento de árboles de forma 3.1. Árboles. del texto básico tal como se
12 horas de autoestudio
necesarias para resolver concºeptual y gráfica. indica en la guía didáctica
un problema. 3.2. Terminología. 8 horas de interacción con complementado con las
• Reconoce los métodos
el EVA y tutorías actividades de la unidad 3 de la
SEGUNDO
3.3. Aplicaciones de los
BIMESTRE
Comprender, analizar para recorrer un árbol
árboles. guía didáctica.
y resolver problemas binario.
aplicando los métodos de 3.4. Árboles binarios. Desarrollo de la autoevaluación
• Propone una forma
la ciencia y la ingeniería. que se indica en la guía didactica.
de representación 3.5. Recorridos en arboles
Aplicar la lógica estructurada para los binarios. Realizar la interacción en el
matemática en el árboles binarios EVA y resolviendo los ejercicios
SOLUCIONARIO
contexto de las Ciencias 3.6. Autoevaluación 3. prácticos que se plantean
• Propone soluciones
de la Computación, con
acordes a la necesidad
proyección, al diseño de
a través de los árboles
circuitos, programación,
binarios.
análisis y desarrollo de
algoritmos. • Propone soluciones UNIDAD 4: Semana 3 y 4 Lectura del capítulo 15(Entradas
informáticas para el 4.1. Formas de acceso. y salidas por archivos) del texto
Diseño e Implementación 12 horas de autoestudio
almacenamiento de básico tal como se indica en la
de programas de 4.2. Flujos.
ANEXOS
información. 8 horas de interacción con guía didáctica complementado
aplicación. el EVA y tutorías con las actividades de la unidad 4
• Identifica el tipo de acceso 4.3. Tipo de dato FILE.
Diagnóstico y solución de de la guía didáctica.
que se debe realizar en un 4.4. Abrir un archivo.
problemas en software. determinado archivo. Desarrollo de la autoevaluación
4.5. Escribir datos. que se indica en la guía didactica.
• Reconoce el tipo de
archivo del que se tiene 4.6. Lectura de datos. Realizar la interacción en el
MULTIMEDIA
RECURSOS
que extraer los datos 4.7. Cerrar el archivo. EVA y resolviendo los ejercicios
prácticos que se plantean
4.8. Autoevaluación 4
• Identifica y representa UNIDAD 5: Semana 5 y 6 Estudio autónomo de la quinta
datos en grafos. 5.1Componentes de un unidad.
12 horas de autoestudio
• Recnoce el tipo de grafo grafo. Lectura analítica.
8 horas de interacción con
y sus formas de lectura 5.2 Definiciones. el EVA y tutorías Desarrollo de actividades
(recorrido)
5.3 Representación recomendadas en el texto básico
• Realiza operaciones para y en la guía didáctica.
extarer la información de 5.4 Autoevaluación 5
Interacción en el EVA.
los grafos.
Finalizar con el desarrollo de la
evaluación a distancia.
CRONOGRAMA
COMPETENCIAS OBJETIVOS DE CONTENIDOS ACTIVIDADES DE
ORIENTATIVO
ESPECÍFICAS APRENDIZAJE APRENDIZAJE
Unidades/Temas Tiempo estimado
UNIDADES DE LA 3 A Semana 7 y 8 Preparación para evaluación
LA 5 presencial del segundo bimestre.
12 horas de autoestudio
8 horas de interacción con
el EVA y tutorías
PRELIMINARES
Unidad 3: ESTRUCTURAS DE DATOS NO LINEALES, ÁRBOLES
BIMESTRE
PRIMER
Recursos educativos multimedia
SEGUNDO
BIMESTRE
Árboles Árboles
SOLUCIONARIO
Recorrido de Recorrido de
Árboles Árboles
ANEXOS
En la unidad anterior estudiamos las estructuras de datos dinámicas, particularmente las listas enlazadas
y tal como nos pudimos dar cuenta tienen algunas ventajas: en primer lugar se pueden crear nodos en
tiempo de ejecución; es decir, conforme se necesite almacenar mas información se van creando dichos
elementos; y por otra parte esta es una estructura lineal puesto que existe un solo camino para recorrer
sus elementos desde el principio hasta el último elemento.
MULTIMEDIA
RECURSOS
En la presente unidad el tema central de estudio son los árboles, los cuales también son estructuras
dinámicas puesto que se crean mediante punteros, pero a diferencia de las listas enlazadas estas
estructuras son de tipo jerárquico, lo cual quiere decir que la información está organizada en varios
niveles y como podremos ver más adelante existen muchos caminos para recorrer la estructura desde el
primer elemento o raíz hasta los elementos de los niveles más avanzados.
Para el estudio de esta unidad estaremos ayudandonos del texto base concretamente del capítulo 20.
3.1. Árboles.
Entender las estructuras de datos puede ser tan simple si lo miramos desde un punto de vista muy
objetivo, relacionemos pues los árboles de nuestro medio ambiente con estas estructuras de datos.
Un árbol implica una estructura en la cual los datos se organizan de modo que los elementos de
información están relacionados entre sí a través de ramas. El árbol genealógico es el ejemplo típico más
representativo del concepto de árbol general.
Un árbol consta de un conjunto finito de elementos, denominados nodos y un conjunto finito de líneas
dirigidas, denominadas ramas, que conectan los nodos. El número de ramas asociado con un nodo es el
PRELIMINARES
grado del nodo. Si un árbol no está vacío, entonces el primer nodo se llama raíz.
BIMESTRE
Como se podrá dar cuenta el estudio de los árboles es muy simple puesto que ésta estructura está muy
PRIMER
relacionado con objetos de nuestro entorno físico, a continuación estudiemos los términos que definen
las diferentes características de un árbol.
3.2. Terminología.
SEGUNDO
BIMESTRE
La representación básica del árbol requiere que se utilice la terminología apropiada, por lo que lo invito
a revisar el tema en el texto básico.
SOLUCIONARIO
En la figura 3.1, se realiza una representación gráfica de un árbol en la que se destacan sus atributos.
ANEXOS
MULTIMEDIA
RECURSOS
Figura 3.1 Terminología de árboles
En base a la figura 3.1 revisemos que componentes del árbol corresponden a cada uno de los términos
definidos:
Padres: A, B, F
Hijos: B, E, F, C, D, G, H, I
Descendientes de A: B, C, D
Ascendientes de C: B, A
Hermanos: {B, E, F}, {C, D}, {G, F, I}
Hojas: C, D, E, G, H, I
Profundidad: 3
BCD, E, FGHI
Los árboles pueden representarse de varias maneras, aunque la forma más común es mediante grafos,
tal como se muestra en la figura 3.2.
PRELIMINARES
BIMESTRE
PRIMER
SEGUNDO
BIMESTRE
Figura 3.2 Representación gráfica 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.
SOLUCIONARIO
Finalizado el presente apartado se plantea un ejercicio que permiten afianzar los conocimientos, por
lo que deberá realizar el respectivo análisis y desarrollo basándose en los contenidos anteriormente
tratados.
Ejercicio 3.1
ANEXOS
Consulte en el texto básico base o en cualquier fuente los conceptos relacionados con árboles que se
indican a continuación:
MULTIMEDIA
RECURSOS
Nodo padre: ....................................................................................................................
Nodo hijo ....................................................................................................................
Nodos
....................................................................................................................
descendientes
Nodos ascendientes ....................................................................................................................
Nodos hermanos ....................................................................................................................
Nodo hojas ....................................................................................................................
Nodo interno ....................................................................................................................
Nodo no terminal ....................................................................................................................
Nivel ....................................................................................................................
Arcos ....................................................................................................................
Ramas ....................................................................................................................
Camino ....................................................................................................................
Altura ....................................................................................................................
Subárbol ....................................................................................................................
PRELIMINARES
Árbol equilibrado ....................................................................................................................
Muy bien, ¿Le resultó interesante el ejercicio propuesto?, seguro que si ya que en él se pueden ubicar
algunos conceptos que son básicos para el presente estudio, ahora que hemos revisado la parte teórica
de los árboles es importante ver la importancia y aplicabilidad de los mismos, revisemos esta temática
a continuación.
BIMESTRE
PRIMER
3.3. Aplicaciones de los árboles.
Pensemos que las Estructuras de Datos existen para solucionar problemas de nuestro entorno, caso
contrario no tendrá razón su estudio y aplicación en nuestros programas, revisemos las aplicaciones que
tienen este tipo de estructuras las mismas que se pueden utilizar para:
SEGUNDO
BIMESTRE
• Representar fórmulas matemáticas.
• Organizar adecuadamente la información.
• Registrar la historia de un campeonato de tenis.
• Construir un árbol genealógico.
SOLUCIONARIO
• Análisis de circuitos eléctricos.
Como parte de su estudio, le invitamos a desarrollar el siguiente ejercicio que está ligado a las aplicaciones
de árboles.
Finalizado el presente apartado se plantea ejercicio que permiten afianzar los conocimientos, por lo que
deberá realizar el respectivo análisis y desarrollo basándose en los contenidos anteriormente tratados.
ANEXOS
Finalizado el presente apartado se plantean ejercicios que permiten afianzar los conocimientos, por
lo que deberá realizar el respectivo análisis y desarrollo basándose en los contenidos anteriormente
tratados.
MULTIMEDIA
Ejercicio 3.2
RECURSOS
Investigue por lo menos 5 aplicaciones adicionales de los árboles.
..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................
..................................................................................................................................................
Esperamos esté comprendiendo la parte teórica de árboles ahora antes de empezar a codificar un árbol
al igual que las demás estructuras de datos es necesario conocer su representación, le invitamos a revisar
la forma de representar un árbol.
En este tipo de árbol ningún nodo puede tener más de dos subárboles, es decir cada nodo puede tener
cero, uno o dos hijos (subárboles).
PRELIMINARES
Se conoce el nodo de la izquierda como hijo izquierdo y el nodo de la derecha como hijo derecho.
3 8
BIMESTRE
PRIMER
2 4 7 8
SEGUNDO
BIMESTRE
Un árbol binario es una estructura recursiva, cada nodo es la raíz de su propio subárbol y tiene hijos, que
son raíces de árboles llamados subárboles derecho e izquierdo del nodo, respectivamente.
SOLUCIONARIO
Como puede ver un árbol binario tiene ciertas restricciones (máximo dos subárboles) los cual lo hace
más práctico a la hora de programar esta estructura y una de las tareas principales cuando desarrollamos
aplicaciones con este tipo de árbol es el recorrido, el mismo que lo estudiaremos a continuación.
ANEXOS
3.5. Recorridos en árboles binarios.
Una de las tareas básicas que se realiza en un árbol binario es el recorrido lo cual significa visitar los
nodos del árbol en forma sistemática. Un recorrido de un árbol binario, requiere que cada nodo del árbol
sea procesado (visitado) una vez y sólo una en una secuencia determinada.
MULTIMEDIA
RECURSOS
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 Enorden(IND)
PRELIMINARES
- Recorrer el subárbol izquierdo (I).
- Recorrer el subárbol derecho (D).
- Visitar la raíz (N).
A continuación se presenta los tres recorridos mencionados anteriormente para el árbol mostrado en la
figura: 3.4
BIMESTRE
PRIMER
SEGUNDO
BIMESTRE
SOLUCIONARIO
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
ANEXOS
Una vez que podemos identificar, representar y recorrer un árbol binario, procedamos a revisar algunas
operaciones que se pueden llevar a cabo en árboles.
MULTIMEDIA
RECURSOS
Recuerde, los árboles binarios de búsqueda son muy utilizados, y son la base para nuevas
estructuras como los Árboles binarios equilibrados (AVL), la principal característica es su
facilidad en cuanto a los algoritmos para trabajar con la información almacenada.
Gracias a las características de los árboles binarios se puede extender su funcionalidad; a continuación
revisaremos el árbol binario de búsqueda el mismo que consiste en una estructura sobre la cual se puede
realizar eficientemente las operaciones de búsqueda, inserción y eliminación.
“Para todo nodo T del árbol debe cumplirse que todos los valores de los nodos del subárbol izquierdo de
T deben ser menores o iguales al valor del nodo T.” De forma similar, todos los valores de los nodos del
subárbol derecho de T deben ser mayores o iguales al valor del nodo T.
Un árbol binario de búsqueda se construye en base a una lista de números dados (claves), en el cual el
primer número de dicha lista será la raíz del árbol, y los siguientes valores se ubican de acuerdo al criterio
antes indicado.
A continuación vamos a crear un árbol binario de búsqueda para la siguiente lista de números: 65, 75,
30, 4, 41, 85.
PRELIMINARES
65
30 75
4 41 85
BIMESTRE
PRIMER
Hemos concluido el estudio de esta unidad, como se podrá dar cuenta este tipo de estructuras son muy
importantes, debido a sus características particulares, principalmente la organización jerárquica. Para
evaluar el avance que va adquiriendo sírvase responder la siguiente autoevaluación.
Autoevaluación 3
SEGUNDO
BIMESTRE
1. Escriba una V si considera que la afirmación es VERDADERA o una F si la considera FALSA.
SOLUCIONARIO
1 Los punteros hacen un uso más eficiente de la memoria. ( )
2 Un árbol consta de un conjunto finito de elementos llamados nodos. ( )
3 El nivel de un nodo es la longitud del camino que lo conecta al nodo raíz. ( )
4 Un árbol binario puede tener más de dos subárboles. ( )
ANEXOS
5 El recorrido de un árbol supone visitar cada nodo sólo una vez. ( )
El recorrido postorden procesa primero el subárbol izquierdo, después la raíz y a
6 ( )
continuación el subárbol derecho.
Al trabajar con punteros: ¿Se puede declarar variables puntero que apunten a
7 ( )
cualquier tipo de dato, incluso a otros punteros?.
MULTIMEDIA
RECURSOS
8 El operador & devuelve la dirección de la variable a la cual se aplica. ( )
9 Los árboles sirven para organizar adecuadamente la información. ( )
Todo nodo que no es raíz, ni terminal u hoja se conoce con el nombre de
10 ( )
interior.
Indique lo siguiente:
Padres:
Hijos
Hojas
Hermanos
Profundidad
PRELIMINARES
BIMESTRE
PRIMER
SEGUNDO
BIMESTRE
3. Construir un árbol binario de búsqueda con los siguientes datos: 50, 25, 75, 10, 40, 60, 90,
35, 45, 70, 42.
SOLUCIONARIO
4. Del árbol binario de búsqueda del ejercicio anterior, realice lo siguiente:
Recorrido Preorden:
Recorrido Enorden:
Recorrido Postorden:
ANEXOS
MULTIMEDIA
RECURSOS
Ir a solucionario
Unidad 4: ARCHIVOS
PRELIMINARES
Hasta ahora hemos estudiado las estructuras de datos tanto estáticas (arreglos) como dinámicas (Listas,
árboles) las cuales son de mucha utilidad en el desarrollo de aplicaciones; pero por otra parte pensemos
que las aplicaciones procesan y posteriormente guardan y/o recuperan información, para lo cual se
debe utilizar otras técnicas de almacenamiento permanente como son los archivos.
BIMESTRE
PRIMER
Para la presente unidad es necesario revisar el capítulo 15 Entradas y salidas por archivos, del texto base
Tal como lo he comentado anteriormente, para la buena comprensión de los diferentes temas es
importante en primera instancia tener claro que los aspectos técnicos de las diferentes estructuras
SEGUNDO
BIMESTRE
tienen como base el comportamiento real de ciertos objetos de nuestro entorno, en función de esto
revisemos a continuación las formas de acceso a un archivo.
SOLUCIONARIO
El acceso a la información en un archivo se lo puede realizar de 2 maneras:
• Acceso Secuencial.
Recordemos como se hacía para acceder a un tema musical en los clásicos casettes de audio, se tenía que
adelantar o retroceder la cinta hasta encontrar el tema en cuestión, a este lo llamamos acceso secuencial
puesto que implica recorrer todos los temas anteriores o posteriores de forma similar, cuando el acceso
ANEXOS
a la información (registros) de un archivo es secuencial es necesario recorrer o visitar todos los registros
precedentes.
• Acceso Directo.
MULTIMEDIA
RECURSOS
De la misma forma pensemos como se accede a un tema musical en un clásico disco de acetato o inclusive
un CD de música actual, pues es muy simple se accede directamente al tema requerido, apliquemos el
mismo criterio para leer los registros de un archivo de acceso secuencial.
Tal como se comentó anteriormente las aplicaciones o sistemas informáticos, desde el más pequeño
hasta la más grande base de datos necesita guardar la información en dispositivos externos de
almacenamiento permanente, tales como: CD, DVD, Flash Memory, Disco Duro, etc. la información se
almacena en archivos (ficheros), cuyos datos están almacenados de tal forma que facilite el acceso a los
mismos y adicionalmente se realicen las acciones normales como son: leer, escribir, modificar y eliminar
información.
En forma general un archivo es una forma o medio que disponen los sistemas operativos para guardar
información en una sola unidad lógica de almacenamiento.
Finalizado el presente apartado se plantean ejercicios que permiten afianzar los conocimientos, por
lo que deberá realizar el respectivo análisis y desarrollo basándose en los contenidos anteriormente
tratados.
Ejercicio 4.1
PRELIMINARES
Describa al menos 5 aplicaciones en las cuales se pueda utilizar Archivos para almacenar información:
……………………………………………………………………………………………………….
……………………………………………………………………………………………………….
……………………………………………………………………………………………………….
……………………………………………………………………………………………………….
BIMESTRE
PRIMER
……………………………………………………………………………………………………….
……………………………………………………………………………………………………….
Revisemos a continuación los aspectos teóricos relacionados con el movimiento o flujo de información
desde y hacia los archivos.
SEGUNDO
BIMESTRE
4.2. Flujos.
SOLUCIONARIO
nuestro caso desde la aplicación hasta un fichero, pero este concepto se lo utiliza en otros ámbitos de
las aplicaciones en C, por ejemplo cuando desarrollamos un programa, automáticamente se crean dos
flujos: el primero que se refiere al envío de información desde la aplicación hasta la pantalla (stdout para
presentar datos) y un segundo flujo para enviar datos desde el teclado hasta la aplicación (stdin).
Cuando empezamos a desarrollar aplicaciones en una nueva estructura, es necesario tener en cuenta
lo siguiente: en primer lugar se debe entender todos los conceptos o parte teórica de la misma, pero
ANEXOS
adicional a ello es necesario saber que nunca se empieza a trabajar desde cero o desde lo más básico; los
lenguajes de programación ya tienen definidos ciertos tipos de datos o estructuras que nos servirán de
base para nuestro desarrollo, en este caso el lenguaje C ya tiene definido el tipo de dato FILE el mismo
que lo estudiaremos a continuación.
MULTIMEDIA
RECURSOS
Es necesario revisar el apartado 15.1. Flujos, del texto base, en el que se especifican la
forma en que el lenguaje C estructura los flujos
Puede utilizar algún otro recurso que ayude a afianzar los conocimientos.
Si bien es cierto a nivel de sistema operativo cada archivo tiene su propio nombre, por ejemplo: “leeme.
txt”, “datos.txt”, ”info.dat”, etc. pero a nivel de lenguaje C la forma de acceder a un fichero debe ser mas
técnica, en este caso utilizaremos un puntero o en otras palabras la dirección en la cual se encuentra
ubicado el archivo que vamos a procesar, adicionalmente veamos que para almacenar la información
técnica del archivo que estamos procesando es necesario disponer de una estructura (FILE) en cuyos
campos se almacenen las características del fichero, pues esta estructura FILE ya está definida y por lo
tanto para referirnos a un fichero desde una aplicación C debemos declarar un puntero a esta estructura,
se puede utilizar la siguiente nomenclatura:
FILE *F;
Como nos podemos dar cuenta, la variable “f” es la referencia al fichero que utilizaremos en nuestra
aplicación, y la misma es un puntero a la estructura antes mencionada.
PRELIMINARES
Es necesario revisar el apartado 15.2. Puntero FILE, del texto base, en el que se
la definición de archivo FILE a partir de una estructura de datos.
A continuación revisemos las tareas típicas de procesamiento que se realiza sobre un archivo las que
BIMESTRE
destacan: abrir, leer datos, escribir y cerrar el archivo.
PRIMER
4.4. Abrir un archivo.
SEGUNDO
BIMESTRE
f = fopen(ruta_y_nombre_del_archivo, modo);
Es necesario revisar el apartado 15.3. Apertura de una archivo, del texto base, en el
SOLUCIONARIO
que se especifica la sintaxis y ejemplos a la hora de abrir un archivo
Si el archivo se encuentra en una subcarpeta, recuerde que debe utilizar “\\” en vez de “\” para especificar
dicha ruta, mientras que en el parámetro modo debe indicar precisamente el modo en que será abierto
el archivo (en la sección 15.3.1 del texto básico se encuentran especificados estos parámetros). Esta
función puede retornar un valor NULL si existió un error al intentar abrir el archivo.
ANEXOS
Es importante aclarar que en la presente asignatura pondremos especial interés con en los archivos
cuyo modo de apertura es de tipo “texto”.
MULTIMEDIA
RECURSOS
Si al momento de abrir el archivo en el parámetro modo especificamos el modo de escritura “w” y la
apertura y/o creación fue correcta, ya podemos ejecutar los procesos correspondientes
putc(c, f );
fputc(c, f );
En estas funciones a más de requerir la referencia del archivo en el cual escribirán los datos, también se
debe especificar el dato que será escrito.
Ejercicio 4.2
Desarrolle un programa que registre una lista de 20 números en un archivo de tipo texto:
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.
PRELIMINARES
4.6. Leer datos.
Una vez que el archivo ha sido abierto de forma exitosa se procede a leer la información almacenada en
el mismo, para lo cual normalmente se utiliza un ciclo while para recorrer y extraer los datos almacenados
en el fichero, este proceso repetitivo finaliza cuando la función de lectura de datos encuentra el indicador
de fin de archivo (EOF). Estas funciones de lectura de datos se encuentran especificadas en la sección
BIMESTRE
PRIMER
15.4 del texto básico:
c = getc(f );
c = fgetc(f );
SEGUNDO
BIMESTRE
Como es de imaginar estas funciones requieren como parámetro la referencia del fichero que será leído,
y obviamente que haya sido previamente abierto.
Finalizado el presente apartado se plantea el siguiente ejercicio que permiten afianzar los conocimientos,
por lo que deberá realizar el respectivo análisis y desarrollo basándose en los contenidos anteriormente
SOLUCIONARIO
tratados.
Ejercicio 4.3
ANEXOS
4.7. Cerrar el archivo.
Luego de efectuar las actualizaciones en el archivo, ya sean lectura o escritura de datos se debe ejecutar
el cierre del archivo; por otra parte veamos que si bien es cierto cuando termina la ejecución del
MULTIMEDIA
RECURSOS
programa el archivo se cierra automáticamente, es necesario cerrar explícitamente el fichero para evitar
posibles inconsistencias en la información guardada, pues al cerrar el archivo se obliga a guardar datos
que posiblemente no estén aun registrados y se encuentren en buffer de memoria intermedio.
fclose(f );
Tal como lo comente anteriormente el proceso de cierre es muy simple y como se podrá dar cuenta
únicamente recibe como parámetro la variable de tipo FILE correspondiente al archivo que se desea
cerrar.
Es hora de verificar el avance relacionado con archivos, para lo cual lo invitamos a trabajar en la siguiente
autoevaluación.
Autoevaluación 4
PRELIMINARES
1. Escriba una V si considera que la afirmación es VERDADERA o una F si la considera FALSA.
BIMESTRE
PRIMER
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. ( )
La apertura del archivo se refiere a conectar el archivo externo con el
4 ( )
programa.
SEGUNDO
BIMESTRE
5 Al momento de abrir el archivo se debe especificar el modo de apertura. ( )
6 La estructura FILE está declarada en la librería stdio.h. ( )
El cierre de un archivo debe realizarse con la finalidad de evitar que el archivo
7 ( )
SOLUCIONARIO
que de incompleto.
Los archivos se guardan en dispositivos externos tal como flash memory, cd,
8 ( )
dvd, etc.
La apertura de un archivo debe realizarse de la siguiente manera:
9 FILE *pf; ( )
pf = fopen(nombre_archivo, modo, FILE)
ANEXOS
Al abrir el archivo debe especificarse si este será tratado de forma binaria o
10 ( )
como cadena de caracteres.
MULTIMEDIA
RECURSOS
3. Realice un programa en C para leer un archivo de texto desde el disco.
Ir a solucionario
Unidad 5: GRAFOS
PRELIMINARES
Recursos educativos multimedia
BIMESTRE
PRIMER
Videoconferencia Diapositivas
En el área de la informática existen muchos conceptos que si bien es cierto se definen mediante
SEGUNDO
BIMESTRE
herramientas o estructuras de datos permiten modelar implícitamente conceptos computacionales en
nuestra mente cada día, un caso particular de esto son los Grafos, pensemos que cuando queremos
movilizarnos de una ciudad a otra en nuestro vehículo, normalmente empezamos trazando una ruta
o definimos algunas ciudades por las cuales pasaremos o también seleccionamos de entre varias
alternativas la mejor ruta; por otra parte pensemos también en las compañías aéreas internacionales
SOLUCIONARIO
normalmente hacen sus itinerarios teniendo en cuenta algunas ciudades en las cuales se hará escala;
visto desde el punto de vista informático lo que estamos trazando es un grafo y tal como lo hemos visto
tiene una gran cantidad de aplicaciones en áreas como: geografía, ingenierías, en el campo industrial,
sistemas de información geográfica, en las compañías de distribución de productos, etc.
ANEXOS
siguiente ejercicio que tiene relación con los grafos y sus aplicaciones.
Varios autores realizan la siguiente definición: “Un grafo, G, es un par, compuesto por dos conjuntos
V y A. Al conjunto V se le llama conjunto de vértices o nodos del grafo. A es un conjunto de pares de
vértices, estos pares se conocen habitualmente con el nombre de arcos o ejes del grafo”. Se suele utilizar
MULTIMEDIA
RECURSOS
la notación G = (V, A) para identificar un grafo.
Desarrolle el ejercicio que a continuación se indica, esto le permitirá afianzar sus conocimientos en los
temas tratados.
Ejercicio 5.1
Describa 5 ejemplos en los cuales se puede utilizar los grafos como estructuras de datos:
………………………………………………..………….…………………………………………….
…………………………………………………..……….…………………………………………….
……………………………………………………..…….…………………………………………….
………………………………………………………...……………………………………………….
…………………………………………………………...…………………………………………….
Tal como le hemos hecho en las unidades anteriores empecemos revisando los fundamentos teóricos
de esta estructura, y al igual que todos los temas antes estudiados, la terminología es importante para la
comprensión del tipo de datos propiamente dicho.
PRELIMINARES
Desde el punto de vista más formal, un grafo está constituido básicamente por dos elementos:
• Vértices o nodos, los cuales son los puntos o aristas que conforman el grafo.
BIMESTRE
PRIMER
información que proporcionan. Los grafos pueden ser dirigidos o no dirigidos, tal como se indica en la
figura 5,1 y 5.2.
SEGUNDO
BIMESTRE
SOLUCIONARIO
Figura 5.1: Grafo no dirigido Figura 5.2: Grafo dirigido
Finalizado el presente apartado se plantea un ejercicio que permiten afianzar los conocimientos, por
lo que deberá realizar el respectivo análisis y desarrollo basándose en los contenidos anteriormente
tratados.
ANEXOS
Ejercicio 5.2
Dado el siguiente conjunto de Vértices y aristas, represente gráficamente los respectivos grafos
MULTIMEDIA
RECURSOS
(identifique si es un grafo dirigido o no dirigido:
G1 = (V1, A1)
V1 = {1, 2, 3, 4} A1 = {(1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)}
G2 = (V2, A2)
V2 = {1, 2, 3, 4, 5, 6} A2 = {(1, 2), (1, 3), (2, 4), (2, 5), (3, 6)}
G3 = (V3, A3)
V3 = {1, 2, 3} A3 = {<1, 2>, <2, 1>, <2, 3>}
PRELIMINARES
BIMESTRE
PRIMER
5.2. Definiciones.
SEGUNDO
BIMESTRE
A continuación revisemos las definiciones de los términos relacionados con los Grafos:
• Grafo no dirigido: Gráficamente este tipo de grafo no tiene dirección o no tiene flechas, de manera
formal podríamos decir que el arco que une los dos nodos se puede representar de dos formas
(n1, n2) o (n2, n1), ver Figura 5.1.
SOLUCIONARIO
• Grafo dirigido. El ejemplo de la figura 5.2 es un Grafo dirigido, puesto que las flechas indican la
relación 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.
ANEXOS
• Grado. Es el número de arcos que contiene el nodo.
MULTIMEDIA
RECURSOS
• Grado de salida. Es el número de arcos que salen del nodo.
La mejor manera de entender los conceptos de un grafo es aplicarlos en un modelo especifico, para lo
cual sírvase desarrollar el siguiente ejercicio.
Ejercicio 5.2
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>}
PRELIMINARES
BIMESTRE
PRIMER
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)}
SOLUCIONARIO
ANEXOS
MULTIMEDIA
RECURSOS
Ejercicio 5.3
Revisar los conceptos mencionados en la unidad 5.2 e identificar la representación formal o matemática
de los mismos.
Una vez que hemos estudiado la parte relacionada con los conceptos, veamos cómo se almacena
la información de esta estructura (la misma que es un poco irregular) para ser utilizadas en nuestras
aplicaciones, veremos que se usan estructuras de datos ya conocidas por nosotros como lo son: arreglos
y listas enlazadas.
5.3. Representación.
Obviamente para trabajar con la estructura Grafo en un sistema computacional este debe ser
representado utilizando estructuras propias de los lenguajes de programación, en base a esto veremos
que existen dos formas de representar esta estructura:
PRELIMINARES
BIMESTRE
Figura 5.3: Grafo
PRIMER
Matriz de adyacencia:
En este caso se utiliza una matriz cuadrada para representar el Grafo, en la cual tanto las filas y columnas
representan los nodos del Grafo y cuando existe una relación entre dos nodos se coloca un “1”, la siguiente
SEGUNDO
BIMESTRE
es la matriz de adyacencia para el Grafo de la Figura 5.3:
A B C D E
↓ ↓ ↓ ↓ ↓
SOLUCIONARIO
0 1 1 0 0 ←A
1 0 0 0 0 ←B
A= 0 0 0 0 0 ←C
0 1 1 0 0 ←D
1 0 0 0 0 ←E
ANEXOS
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.
MULTIMEDIA
RECURSOS
Ejercicio 5.4
Desarrolle un programa que construya la matriz de adyacencia de un Grafo; los datos deben ser
ingresados desde el teclado.
Listas de adyacencia:
Se utilizan Listas enlazadas para representar el grafo, para lo cual se crea una “Lista de Directorio” misma
que es una lista de todos los nodos del grafo y para representar la relación con los otros nodos se crean
nuevos enlaces desde cada nodo de la “Lista de Directorio” antes mencionada, igualmente en la siguiente
figura se muestra la “Lista de adyacencia” para el Grafo de la Figura 5.3.
PRELIMINARES
BIMESTRE
PRIMER
Figura 5.5 Listas de adyacencia utilizando listas enlazadas
SEGUNDO
BIMESTRE
De la misma forma la representación mediante listas de adyacencia utiliza listas enlazadas, como ejercicio
final al estudio de esta estructura sírvase realizar el programa correspondiente para el Grafo anterior y
utilizando esta última forma de representación.
Muy bien estimados estudiantes hemos llegado a la finalización del estudio de la asignatura en este
SOLUCIONARIO
segundo bimestre y por ende del presente ciclo, esperamos que los conocimiento adquiridos sean los
básicos y necesarios para iniciar en el desarrollo de aplicaciones pequeñas pero que tengan eficiencia y
eficacia, es por ello que le invitamos a desarrollar la última autoevaluación esperando todo le salga de
lo mejor. Adelante y éxitos!.
Autoevaluación 5
ANEXOS
1. Escriba una V si considera que la afirmación es VERDADERA o una F si la considera FALSA.
MULTIMEDIA
RECURSOS
1 Se conoce como arco a la línea que une dos nodos de un Grafo. ( )
2 Un Grafo dirigido es aquel cuyas líneas tienen una flecha es decir una dirección. ( )
La Matriz de adyacencia se utiliza para representar Grafos únicamente cuando
3 ( )
estos son valorados.
Se dice que un Grafo es valorado cuando los nodos tienen un numero en lugar
4 ( )
de tener un texto o una letra.
5 El término “Camino” es un concepto utilizado en Grafos. ( )
La Longitud entre dos nodos de un Grafo es la suma de los valores que tienen los
6 ( )
arcos que los une.
Si el Grafo es no dirigido el Grado puede clasificarse en: Grado de entrada y
7 ( )
Grado de salida.
En un Grafo no dirigido, el arco que une los nodos A y B; se puede escribir de
8 ( )
cualquiera de estas formas (A, B) y (B, A).
El uso de listas de adyacencia para representar Grafos hace mas óptimo el uso de
9 ( )
memoria.
10 Se puede utilizar Grafos en Ingeniería Eléctrica. ( )
PRELIMINARES
• 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>}
BIMESTRE
PRIMER
Ir a solucionario
SEGUNDO
BIMESTRE
SOLUCIONARIO
ANEXOS
MULTIMEDIA
RECURSOS
8. Solucionario
PRELIMINARES
8.1. Autoevaluación 1
1. Escriba una V si considera que la afirmación es VERDADERA o una F si la considera FALSA.
BIMESTRE
PRIMER
1 F
2 V
3 F
4 F
5 V
6 F
SEGUNDO
BIMESTRE
7 V
8 V
9 V
10 V
SOLUCIONARIO
Parte A:
2. Declare un arreglo de orden “m x n”, puede ser tres filas y tres columnas. Se desea registrar
la siguiente matriz:
5 6 9
ANEXOS
10 1 7
3 5 2
int datos[3][3];
MULTIMEDIA
RECURSOS
El arreglo definido es de tipo entero y consta de 3 filas y 3 columnas y su identificador es “datos”.
Estrategia:
5 6 9
10 1 7
3 5 2
Estrategia:
PRELIMINARES
Consulte el apartado 9.4.4 del texto base especialmente el ejercicio 9.5. “datos” es la matriz, definida en
el punto 1
4. Escriba el código para obtener los elementos de la diagonal principal de la matriz declarada
y páselos a un arreglo unidimensional.
int diagonal[3];
BIMESTRE
PRIMER
for (i=0; i<3; i++)
diagonal[i] = datos[i][j];
Estrategia:
SEGUNDO
BIMESTRE
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
SOLUCIONARIO
5. Presente gráficamente el arreglo unidimensional del punto anterior ordenado de forma
ascendente y forma descendente.
Orden ascendente:
1 2 5
ANEXOS
Orden descendente:
5 2 1
MULTIMEDIA
RECURSOS
Parte B:
PRELIMINARES
Su funcionamiento es el siguiente:
• Buscar el mínimo elemento de la lista
• Intercambiarlo con el primero
• Buscar el mínimo en el resto de la lista
• Intercambiarlo con el segundo
Y en general:
BIMESTRE
PRIMER
• Buscar el mínimo elemento entre una posición i y el final de la lista
• Intercambiar el mínimo con el elemento de la posición i
Estrategia: Revise el apartado 10.3 del texto base. Además en el anexo 2 se indica la codificación de la
SEGUNDO
BIMESTRE
aplicación del algoritmo de ordenación por selección.
SOLUCIONARIO
Ir a autoevaluación
ANEXOS
MULTIMEDIA
RECURSOS
8.2. Autoevaluación 2
PRELIMINARES
1. Escriba una V si considera que la afirmación es VERDADERA o una F si la considera FALSA.
1 V
2 V
3 V
4 F
BIMESTRE
PRIMER
5 F
6 V
7 F
8 F
9 F
10 V
SEGUNDO
BIMESTRE
3) Cree una lista enlazada en C/C++ que permita representar la secuencia 1,2,3,….10.
Estrategia: Para resolver este ejercicio es necesario revisar el apartado 18.2 del texto base. La solución
de este ejercicio está en el anexo 5 de ésta guía.
SOLUCIONARIO
4) Sobre la lista creada en el punto 1, encuentre el dato del nodo 5.
ANEXOS
if (Siguiente->Datos == valor){
encontrado = 1;
Siguiente = NULL;
}
else
MULTIMEDIA
Siguiente = Siguiente->Enlace;
RECURSOS
}
return encontrado;
}
En la codificación se presenta la función que permite buscar un elemento en la lista enlazada y al
momento en que se encuentra devuelve el valor de 1, caso contrario 0.
Estrategia: Para resolver este ejercicio es necesario revisar el apartado 18.3 del texto base.
Ir a autoevaluación
8.3. Autoevaluación 3
PRELIMINARES
1. Escriba una V si considera que la afirmación es VERDADERA o una F si la considera FALSA.
1 V
2 V
3 V
BIMESTRE
PRIMER
4 F
5 V
6 F
7 V
8 V
9 V
SEGUNDO
BIMESTRE
10 V
Indique lo siguiente:
SOLUCIONARIO
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
ANEXOS
Estrategia: Para resolver este ejercicio es necesario revisar el apartado 3.2 de la guía didáctica.
3. Construir un árbol binario de búsqueda con los siguientes datos: 50, 25, 75, 10, 40, 60, 90,
35, 45, 70, 42.
MULTIMEDIA
RECURSOS
Estrategia: Para resolver este ejercicio es necesario revisar el apartado 20.2 del texto base.
PRELIMINARES
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 capítulo de la guía como en el apartado 20.6 del texto base.
BIMESTRE
PRIMER
SEGUNDO
BIMESTRE
Ir a autoevaluación
SOLUCIONARIO
ANEXOS
MULTIMEDIA
RECURSOS
8.4. Autoevaluación 4
PRELIMINARES
3. Escriba una V si considera que la afirmación es VERDADERA o una F si la considera FALSA.
1 V
2 V
3 V
BIMESTRE
4 V
PRIMER
5 V
6 V
7 V
8 V
9 F
SEGUNDO
BIMESTRE
10 V
#include <stdio.h>
SOLUCIONARIO
#include <conio.h>
int main () {
int c;
FILE *pf;
char *salida = “salida.txt“;
if ((pf = fopen(salida, “wt“) == NULL){
puts(“Error “);
ANEXOS
return 1;
}
while ((c = getchar())!=EOF){
putc(c, pf );
}
MULTIMEDIA
RECURSOS
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 finalizar deberá presionar Crtl+Z luego enter.
#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){
putchar(c);
}
PRELIMINARES
fclose(pf );
getch();
return 0;
}
El programa permite leer el archivo “salida.txt” que se encuentra en el disco y presentarlo en consola.
BIMESTRE
PRIMER
SEGUNDO
BIMESTRE
Ir a autoevaluación
SOLUCIONARIO
ANEXOS
MULTIMEDIA
RECURSOS
8.5. Autoevaluación 5
PRELIMINARES
1. Escriba una V si considera que la afirmación es VERDADERA o una F si la considera FALSA.
1 V
2 V
3 F
BIMESTRE
PRIMER
4 F
5 V
6 V
7 F
8 V
SEGUNDO
BIMESTRE
9 V
10 V
SOLUCIONARIO
• 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>}
ANEXOS
• G2={V2, A2} V2={a, b, c, d, e, f, g, h}
MULTIMEDIA
RECURSOS
G2={(a, b), (a, c), (b, d), (c, d), (d, e), (d, f ), (e, f ), (e, g), (g, f ), (f, h), (g, h)}
Ir a autoevaluación
9. Anexos
PRELIMINARES
DICTIONARY
THESAURUS
El presente material ha sido reproducido con fines netamente didácticos, cuyo objetivo es
brindar al estudiante mayores elementos de juicio para la comprensión de la materia, por
lo tanto no tiene fin comercial.
BIMESTRE
PRIMER
Anexo 1
SEGUNDO
BIMESTRE
SOLUCIONARIO
ANEXOS
MULTIMEDIA
RECURSOS
Programa codificado en C, que permite ingresar 5 elementos desde teclado y aplicando uno de los
métodos de ordenación burbuja permite presentar la lista ordenada en forma ascendente. El método en
el cual se aplica el algoritmo se denomina OrdenarBurbuja.
Anexo 2
PRELIMINARES
Ordena los elementos de un arreglo utilizando el método por selección.
BIMESTRE
PRIMER
SEGUNDO
BIMESTRE
SOLUCIONARIO
ANEXOS
MULTIMEDIA
RECURSOS
Anexo 3
PRELIMINARES
Ordena los elementos de un arreglo utilizando el método de inserción.
BIMESTRE
PRIMER
SEGUNDO
BIMESTRE
SOLUCIONARIO
ANEXOS
MULTIMEDIA
RECURSOS
Programa en C, que permite ordenar una lista de 10 elementos aplicando el método de inserción. El
método que implementa el algoritmo es Orden Inserción.
Anexo 4
PRELIMINARES
Programa que permite realizar una búsqueda aplicando el algoritmo de búsqueda secuencial
BIMESTRE
PRIMER
SEGUNDO
BIMESTRE
SOLUCIONARIO
ANEXOS
Programa codificado en C, que permite aplicar el método de búsqueda secuencial en un arreglo de 5
elementos.
MULTIMEDIA
RECURSOS
Anexo 5
PRELIMINARES
Permite realizar búsqueda binaria en arreglos.
BIMESTRE
PRIMER
SEGUNDO
BIMESTRE
SOLUCIONARIO
ANEXOS
MULTIMEDIA
RECURSOS
Anexo 6
PRELIMINARES
Permite crear una lista enlazada, crea los nodos y le asigna valores a dichos nodos.
BIMESTRE
PRIMER
//declaración de una estructura que contiene al puntero
struct Elemento {
int informacion;
struct Elemento* Siguiente; //declaración de puntero siguiente.
};
SEGUNDO
BIMESTRE
typedef struct Elemento Nodo;
void presentar(Nodo* cab); //declaración de método presentar que recibe como parámetro un
//puntero.
SOLUCIONARIO
main() {
int dato;
Nodo* pCabeza; //declaración de un puntero del tipo Nodo declarado en la estructura
Nodo* p; //declaración de un puntero del tipo Nodo declarado en la estructura
Nodo* aux; //declaración de un puntero del tipo Nodo declarado en la estructura
pCabeza = malloc(sizeof(Nodo)); //asignación dinámica de memoria al puntero
printf(“Ingrese la informacion del nodo: “);//presenta en pantalla el texto
ANEXOS
scanf(“%d”, &dato); //lee el dato ingresado
(*pCabeza).informacion = dato; //al puntero en el campo información se asigna el dato
//ingresado
(*pCabeza).Siguiente = NULL; //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.
MULTIMEDIA
RECURSOS
//la sentencia repetitiva do permite llenar y crear los nuevos nodos de la lista.
do
{
printf (“Ingrese la información del nodo: “);
scanf (“%d”, &dato);
//se asigna los nuevos valores a la lista
if (dato! = -1)
{
aux = malloc (sizeof(Nodo));
(*aux).informacion = dato;
(*aux).Siguiente = NULL;
(*p).Siguiente = aux;
p = aux;
}
} while(dato != -1);
printf(“\n\n”);
presentar(pCabeza);
printf(“\n\n”);
scanf(“\n\n”);
}
void presentar(Nodo* cab){
PRELIMINARES
Nodo* p = NULL;
p = cab;
while (p != NULL) {
printf(“%d, “, (*p).informacion);
p = (*p).Siguiente;
}
}
BIMESTRE
PRIMER
SEGUNDO
BIMESTRE
SOLUCIONARIO
ANEXOS
MULTIMEDIA
RECURSOS
Anexo 7
PRELIMINARES
Crea la estructura de una lista enlazada le añade valores a los nodos y presenta la lista enlazada.
#include <stdio.h>
struct Elemento {
int información;
BIMESTRE
PRIMER
struct Elemento* Siguiente;
};
typedef struct Elemento Nodo;
main() {
SEGUNDO
BIMESTRE
int dato;
Nodo* pCabeza;
Nodo* p;
Nodo* aux;
SOLUCIONARIO
pCabeza = malloc(sizeof(Nodo));
printf(“Ingrese la información del nodo: “);
scanf(“%d”, &dato);
pCabeza->informacion = dato;
pCabeza->Siguiente = NULL;
p = pCabeza;
do {
ANEXOS
printf(“Ingrese la información del nodo: “);
scanf(“%d”, &dato);
if (dato != -1) {
aux = malloc(sizeof(Nodo));
aux->informacion = dato;
MULTIMEDIA
RECURSOS
aux->Siguiente = NULL;
p->Siguiente = aux;
p = aux;
}
} while(dato != -1);
printf(“\n\n”);
presentar(pCabeza);
printf(“\n\n”);
scanf(“\n\n”);
}
presentar(Nodo* cab)
{
Nodo* p = NULL;
p = cab;
while (p != NULL)
{
printf(“%d, “, p->información);
p = p->Siguiente;
}
}
Anexo 8
PRELIMINARES
Permite crear una lista doblemente enlazada, ingresa los valores correspondientes a los nodos y luego
presenta la información de los nodos.
#include <stdio.h>
#include <stdlib.h>
BIMESTRE
PRIMER
struct Elemento {
int información;
struct Elemento* Anterior;
struct Elemento* Siguiente;
};
SEGUNDO
BIMESTRE
typedef struct Elemento Nodo;
void presentar(Nodo* cab);
void presentar2(Nodo* final);
main() {
SOLUCIONARIO
int dato;
Nodo* pCabeza;
Nodo* p;
Nodo* aux;
pCabeza = malloc(sizeof(Nodo));
printf(“Ingrese la información del nodo: “);
ANEXOS
scanf(“%d”, &dato);
(*pCabeza).información = dato;
(*pCabeza).Siguiente = NULL;
(*pCabeza).Anterior = NULL;
p = pCabeza;
MULTIMEDIA
RECURSOS
do {
printf(“Ingrese la información del nodo: “);
scanf(“%d”, &dato);
if (dato != -1) {
aux = malloc(sizeof(Nodo));
(*aux).información = dato;
(*aux).Siguiente = NULL;
(*aux).Anterior = p;
(*p).Siguiente = aux;
p = aux;
}
} while(dato != -1);
printf(“\n\n”);
presentar(pCabeza);
printf(“\n\n”);
presentar2(p);
scanf(“\n\n”);
}
PRELIMINARES
p = cab;
while (p != NULL) {
printf(“%d, “, (*p).información);
p = (*p).Siguiente;
}
}
void presentar2(Nodo* final){
BIMESTRE
PRIMER
Nodo* p = NULL;
p = final;
while (p != NULL) {
printf(“%d, “, (*p).información);
p = (*p).Anterior;
SEGUNDO
BIMESTRE
}
}
SOLUCIONARIO
ANEXOS
MULTIMEDIA
RECURSOS
DAGC-GERC/ymtene/14-07-2011/68
gnpr/2012-08-08/76
Actualización de créditos: vtc/ 2013-08-23/77 págs.
wo/2015-08-05
PRELIMINARES
Videoconferencias Diapositivas
BIMESTRE
PRIMER
Primer Bimestre Primer Bimestre
Ordenación Ordenación
Búsqueda Búsqueda
SEGUNDO
BIMESTRE
Listas enlazadas Listas enlazadas
SOLUCIONARIO
Árboles Árboles
Grafos Grafos
ANEXOS
MULTIMEDIA
RECURSOS
18308
Asesoría virtual:
www.utpl.edu.ec