90
Segundo “B” ESTRUCTURA DE DATOS SILVIA PATRICIA DELGADO MERA Ing. Cristian Torres Morán Mayo – Septiembre 2013 Periodo 2013-2014

Estructura silvia

Embed Size (px)

Citation preview

Page 1: Estructura silvia

1

Segundo “B”

ESTRUCTURA DE DATOS

SILVIA PATRICIA DELGADO MERA

Ing. Cristian Torres Morán

Mayo – Septiembre 2013 Periodo 2013-2014

Page 2: Estructura silvia

2

FACULTAD CIENCIAS INFORMÁTICAS

Page 3: Estructura silvia

3

UNIVERSIDAD TÉCNICA DE MANABÍ FACULTAD DE CIENCIAS INFORMÁTICAS

CARRERA DE INGENIERIA DE SISTEMAS INFORMÁTICOS

TABLA DE CONTENIDOS

Etapa 1.Prontuario del curso.

Etapa 2.Carta de presentación.

Etapa 3.Autorretrato.

Etapa 4.Diario Metacognitivo.

Etapa 5.Artículos de revistas profesionales.

Etapa 6.Trabajo de ejecución.

Etapa 7.Materiales relacionados con la clase.

Etapa 8. Sección abierta.

Etapa 9. Resumen de cierre.

Etapa 10. Anexos.

Page 4: Estructura silvia

4

Page 5: Estructura silvia

5

FACULTAD/DEPARTAMENTO: FACULTAD DE CIENCIAS INFORMÁTICAS

CARRERA: INGENIERÍA EN SISTEMAS INFORMÁTICOS

ASIGNATURA/MÓDULO: ESTRUCTURA DE DATOS CÓDIGO: OF-0201

Nivel / Semestre: 2 N° de Créditos:5 Modalidad : Presencial Paralelo: 2do. “B” Período Académico: Sept. 25/2012 – Feb 14/2013 Área Académica: SOFTWARE

PRERREQUISITO (S): CORREQUISITO (S): CONTENIDOS DISCIPLINARES QUE DEBEN SER APROBADAS ANTES DE

CURSAR ESTE CONTENIDO DISCIPLINAR

CÓDIGO

CONTENIDOS DISCIPLINARES QUE DEBEN SER CURSADOS AL

MISMO TIEMPO QUE ESTE CONTENIDO DISCIPLINAR

CÓDIGO

PROGRAMACIÓN I OC-0100

DOCENTE: Ing. CHRISTIAN RONALD TORRES MORÁN

Título: MAGITER EN GERENCIA EDUCATIVA E-mail: [email protected]

Datos personales: Profesor contratado a tiempo completo de la asignatura Estructura de Datos, y Herramientas Web

Director de Tesis de Ingeniería en Sistemas Informáticos, miembro de los equipos de Vinculación con la sociedad, Docente

Tutor de pasantías pre profesionales, coautor del manual de Estructura de Datos junto a la Ing. Esthela San Andrés Láz,

coautor del folleto de flujogramas para NBU.

UNIVERSIDAD TÉCNICA DE MANABÍ FACULTAD DE CIENCIAS INFORMÁTICAS CARRERA DE INGENIERÍA EN SISTEMAS INFORMÁTICOS

SYLLABUS

I.- INFORMACIÓN GENERAL

II.- RUTA FORMATIVA

a.- DEL PERFIL DE EGRESO: Competencia/Resultado de Aprendizaje: Competencia:

3. Construye soluciones informáticas de calidad que mejoren la eficiencia y eficacia de una organización haciendo uso correcto de la tecnología.

Resultado de Aprendizaje:

a. Capacidad de planificar, diseñar, conducir e interpretar resultados de experimentos orientados a la informática.

b.- OBJETIVO GENERAL DE LA ASIGNATURA: Capacitar al estudiante con los conocimientos significativos en administración de memoria dinámica y herramientas útiles en los diseños, construcciones y usos principales de algoritmos en la estructuración de datos lineales y no lineales

c.- DESCRIPCIÓN DE LA ASIGNATURA: La materia introduce al estudiante a los conceptos y aplicación en la administración de memoria, aplicando programación estructurada y orientada a objetos, permite conocer la estructura básica operacional de la memoria RAM y de los grandes diseños de software, aplicando C++ el estudiante desarrollará proyectos científicos tanto con interfaces en modo gráfico y en

Page 6: Estructura silvia

6

Resultados del Aprendizaje

(Objetivos Específicos)

Formas de

Evidenciarlos (Apreciación)

Niveles del resultado de aprendizaje

Ponderación

1.- Identificar los tipos estructurados de datos estáticos y dinámicos empleados en la creación de aplicaciones, considerando los lenguajes de programación. (Nivel Taxonómico: Conocimiento)

1.- Pruebas escritas, orales (fotos), talleres, informes de ensayo, investigación y Prácticas en el Lenguaje de programación C++.

Describirá la definición de la estructura de datos,

los tipos de datos simples, básicos y compuestos

en un ensayo técnico con: descripción general del

tema clara; ideas que tienen relación, claridad y

objetividad con el tema; y una conclusión clara con

aporte personal.

Describirá la definición de la estructura de datos,

los tipos de datos simples, básicos y compuestos

en un ensayo técnico con: descripción general del

tema confusa; pocas ideas que tienen relación,

claridad y objetividad con el tema; y una

conclusión confusa con aporte personal.

Describirá la definición de la estructura de datos,

los tipos de datos simples, básicos y compuestos

en un ensayo técnico con: descripción general del

tema confusa; poca o ninguna idea que tienen

relación, claridad y objetividad con el tema; y una

conclusión confusa sin aporte personal.

NIVEL ALTO:

86-100

NIVEL MEDIO

71-85

NIVEL BÁSICO

70

2.- Elaborar aplicaciones dinámicas de estructura lineal, almacenamiento y recuperación de los mismos en unidades de almacenamiento, aplicarán soluciones de administración de memoria mediante el desarrollo de aplicaciones científicas y comerciales. (Nivel Taxonómico: Aplicación)

2.- Pruebas escritas, orales (fotos), talleres, informes de ensayo, investigación y Prácticas en el Lenguaje de programación C++.

Comparará con la utilización de un cuadro

comparativo tres semejanzas y tres diferencias

entre los tipos de datos que permiten almacenar

más de un dato; reflejando las relaciones de las

comparaciones con ideas claras.

Comparará con la utilización de un cuadro

comparativo tres semejanzas y tres diferencias

entre los tipos de datos que permiten almacenar

más de un dato; reflejando las relaciones de las

comparaciones con ideas pocos claras.

Comparará con la utilización de un cuadro

comparativo dos semejanzas y dos diferencias

entre los tipos de datos que permiten almacenar

más de un dato; reflejando las relaciones de las

comparaciones con ideas confusas.

NIVEL ALTO:

86-100

NIVEL MEDIO

71-85

NIVEL BÁSICO

70

III.- RESULTADOS DE APRENDIZAJE DE LA ASIGNATURA

Page 7: Estructura silvia

7

3.- Implementar aplicaciones

dinámicas de estructura Lineal, almacenamiento y recuperación de los mismos en unidades de almacenamiento, aplicarán soluciones de administración de memoria mediante el desarrollo de aplicaciones científicas y

comerciales (Nivel Taxonómico: Aplicación)

3.- Pruebas escritas, orales (fotos), talleres, informes de ensayo, investigación y Prácticas en el Lenguaje de programación C++.

Implementará aplicaciones dinámicas de

estructura Lineal, almacenamiento y recuperación

de los mismos en unidades de almacenamiento,

aplicarán soluciones de administración de

memoria mediante el desarrollo de aplicaciones

científicas y comerciales.

Implementará aplicaciones dinámicas de

estructura Lineal, almacenamiento y recuperación

de los mismos en unidades de almacenamiento,

aplicarán soluciones de administración de

memoria mediante el desarrollo de aplicaciones

comerciales.

Implementará aplicaciones dinámicas de

estructura No Lineal, almacenamiento y

recuperación de los mismos en unidades de

almacenamiento.

NIVEL ALTO:

86-100

NIVELMEDIO

71-85

NIVEL BÁSICO

70

4.- Implementar aplicaciones dinámicas de estructura no Lineal, almacenamiento y recuperación de los mismos en unidades de almacenamiento, aplicarán soluciones de administración de memoria mediante el desarrollo de aplicaciones científicas y comerciales (Nivel Taxonómico: Aplicación)

4.- Pruebas escritas, orales (fotos), talleres, informes de ensayo, investigación y Prácticas en el Lenguaje de programación C++.

Elaborará un programa con estructuras dinámicas

no lineales bien detallado.

Elaborará un programa con estructuras dinámicas

no lineales con poca claridad.

Elaborará un programa con estructuras dinámicas no lineales de forma confusa.

NIVEL ALTO:

86-100

NIVEL MEDIO

71-85

NIVEL BÁSICO

70

5.- Organizar la información en algoritmos y estructuras AVL y su relación con los gestores de Base de Datos (Nivel Taxonómico: Aplicación)

5.- Pruebas escritas, orales (fotos), talleres, informes de ensayo, investigación y Prácticas en el Lenguaje de programación C++.

Elaborará un programa que emplee estructuras

arborescentes de forma AVL uso de forma clara.

Elaborará un programa que emplee estructuras

arborescentes de forma AVL de forma poco clara.

Elaborará un programa que emplee estructuras arborescentes de forma AVL de forma confusa.

NIVEL ALTO:

86-100

NIVEL MEDIO

71-85

NIVEL BÁSICO

70

Page 8: Estructura silvia

8

PROGRAMA DEL CONTENIDO DISCIPLINAR (ASIGNATURA, UNIDAD, CURSO, TALLER, OTRO) POR TEMAS

N° TOT AL

HOR AS P-A

HORAS PRESENCIALES

HORAS AUTÓNOMAS

ESTRATEGIAS PARA EL TRABAJO AUTÓNOMO

1. UNIDAD I: GENERALIDADES Y

DEFINICIONES DE ESTRUCTURA DE

DATOS

Definición

Variables, Tipos de datos.

Representación Gráfica de las

estructura de datos

Acceso a las estructura de

Datos (Estáticas)

Tipos de Estructuras de Datos

Diferencia entre gestión

Estática y Dinámica

Operaciones con varios

punteros

Asignación dinámica de

memoria

Liberación dinámica de

memoria

La constante NULL

Ventajas y desventajas de

punteros

46 23

Experiencia:

Aplicando lluvia de ideas

concretar conocimientos

relativo a la memoria y sus

diferentes importancias en el

funcionamiento del

computador

Reflexión:

En equipos de trabajo, analizar

el funcionamiento general del

computador y de los

programas, considerando las

siguientes aplicaciones:

Procesadores de texto, Hojas

de cálculo, Reproductores,

Tareas del sistema operativo

como Impresión, etc.

Conceptualización:

Elaboración de mapas

conceptuales, cuadros de

funcionamiento y estructurales

de la memoria.

Aplicación:

Resolución de ejercicios

demostrativos y de

planteamiento de problemas.

23 Tareas extra- clases. Investigación del tema de la unidad Tareas en el lenguaje de programación C++. CD. interactivo libros PDF. Apoyo para el estudiante, Espacio virtual de la Universidad Técnica de Manabí, Internet. Guardar la evidencia en el Portafolio Digital.

-Formarán equipos de 2 estudiantes -Del taller o tarea respectivas se escogerán ejercicios representativos de acuerdo al resultado de aprendizaje -Se aplicará la técnica de procesos. -Al final de la tarea se interrogarán, así: ¿Qué cosas fueron difíciles? ¿Qué cosas fueron fáciles? ¿Qué aprendí hoy día? ¿Qué aporte a mi equipo? -Aplicarán un ASAT. (Aporte Significativo de Aprendizaje de la Tarea o Taller).

-Para el ensayo del tema respetivo se Tomarán lo lineamientos más importantes de la introducción llamativa, fundamentación y conclusión crítica.

2. UNIDAD II: ESTRUCTURAS SIMPLES

Y COMPUESTAS

Listas Abiertas

60 30

Experiencia:

Aplicando lluvia de ideas

concretar conocimientos

relativo a problemas

30 Tareas extra- clases. Investigación del tema de la unidad Tareas en el lenguaje de

-Formarán equipos de 2 estudiantes -Del taller o tarea respectivas se escogerán ejercicios representativos de acuerdo al resultado de aprendizaje

-Se aplicará la técnica de procesos. -Al final de la tarea se

IV.- PROGRAMACIÓN

Page 9: Estructura silvia

9

Definición de listas abiertas

Declaración e implementación

de una lista

Operaciones con Listas

Inserción de un nodo

Búsqueda de un nodo

Recorridos de una lista

Eliminación de un nodo

Listas y Archivos

Variaciones de listas

Pilas y Colas

Listas circulares o cerradas

Declaración e implementación

de una lista circular

Operaciones con Listas

Inserción de un nodo

Búsqueda de un nodo

Recorridos de una lista

Eliminación de un nodo

Listas doblemente enlazadas abiertas

y cerradas

Declaración e implementación

de una lista doblemente

enlazada

Operaciones con Listas

Inserción de un nodo

Búsqueda de un nodo

Recorridos de una lista

Eliminación de un nodo

informáticos planteados

Reflexión:

En grupos de trabajo, analizar

el funcionamiento general de

los diferentes algoritmos

considerando las diferentes

aplicaciones.

Conceptualización:

Elaboración de conclusiones

conceptuales, cuadros de

funcionamiento y alternativas

estructurales de solución.

Aplicación:

Resolución de ejercicios

demostrativos y de

planteamiento de problemas.

programación C++. CD. interactivo libros PDF. Apoyo para el estudiante, Espacio virtual de la Universidad Técnica de Manabí, Internet. Guardar la evidencia en el Portafolio Digital.

interrogarán, así: ¿Qué cosas fueron difíciles? ¿Qué cosas fueron fáciles? ¿Qué aprendí hoy día? ¿Qué aporte a mi equipo? -Aplicarán un ASAT. (Aporte Significativo de Aprendizaje de la Tarea o Taller). -Para el ensayo del tema respetivo se Tomarán lo lineamientos más importantes de la introducción llamativa, fundamentación y conclusión crítica.

3. UNIDAD III: ESTRUCTURAS

ARBORESCENTES

Definición, implementación

26 13

Experiencia:

• Aplicando debates

definir la importancia de

aplicar algoritmos generales de

13 Tareas extra- clases. Investigación del tema de la unidad Tareas en el

-Formarán equipos de 2 estudiantes -Del taller o tarea respectivas se escogerán ejercicios representativos de acuerdo al resultado de aprendizaje -Se aplicará la técnica de procesos.

Page 10: Estructura silvia

10

Tipos de recorridos:

PreOrden

InOrden

PostOrden

Operaciones con Árboles Binarios de

Búsqueda

Búsqueda de elementos.

Inserción de elementos.

Borrado de elementos.

* Nodo hoja.

*Nodo rama.

Movimiento a través del árbol.

Comprobación de árboles

vacíos.

Comprobación del nodo hoja.

Cálculo de:

Número de nodos.

Altura del árbol.

Altura de un nodo.

Árboles degenerados.

árboles binarios y su

importancia en la agilidad y

seguridad de los datos en el

campo empresarial en general.

Reflexión:

• En grupos de

trabajo, analizar el

funcionamiento general de los

principales sistemas

informáticos, considerando el

avance tecnológico del

software en la base de datos

Conceptualización:

• Elaboración de

propuestas algorítmicas,

prácticas y de alternativas de

resolución.

Aplicación:

• Resolución de

ejercicios demostrativos y de

planteamiento de problemas.

lenguaje de programación C++. CD. interactivo libros PDF. Apoyo para el estudiante, Espacio virtual de la Universidad Técnica de Manabí, Internet. Guardar la evidencia en el Portafolio Digital.

-Al final de la tarea se interrogarán, así:

¿Qué cosas fueron difíciles? ¿Qué cosas fueron fáciles? ¿Qué aprendí hoy día? ¿Qué aporte a mi equipo? -Aplicarán un ASAT. (Aporte Significativo de Aprendizaje de la Tarea o Taller). -Para el ensayo del tema respetivo se Tomarán lo lineamientos más importantes de la introducción llamativa, fundamentación y conclusión crítica.

4. UNIDAD IV: TIPOS DE ÁRBOLES

ESPECIALES

Árboles equilibrados.

Definición.

Operaciones en AVL.

Factor de equilibrio.

Rotación simple de nodos.

Rotación simple a la derecha.

Rotación simple a la izquierda.

Rotación doble de nodos a la

derecha.

Rotación doble de nodos s la

izquierda.

Reequilibrados de árboles

AVL.

Reequilibrados en árboles AVL por inserción de un nodo.

28 14

Experiencia:

Aplicando el planteamiento de

problemas, identificar

dificultades y generar la

necesidad de encontrar

soluciones algorítmicas.

Reflexión:

En grupos de trabajo, analizar

el funcionamiento de los

diferentes algoritmos

propuestos.

Conceptualización:

Elaboración de propuestas de

funcionamiento y alternativas

estructurales de solución.

Aplicación:

14 Tareas extra- clases. Investigación del tema de la unidad Tareas en el lenguaje de programación C++. CD. interactivo libros PDF. Apoyo para el estudiante, Espacio virtual de la Universidad Técnica de Manabí, Internet. Guardar la evidencia en el Portafolio Digital.

-Formarán equipos de 2 estudiantes -Del taller o tarea respectivas se escogerán ejercicios representativos de acuerdo al resultado de aprendizaje -Se aplicará la técnica de procesos. -Al final de la tarea se interrogarán, así: ¿Qué cosas fueron difíciles? ¿Qué cosas fueron fáciles? ¿Qué aprendí hoy día? ¿Qué aporte a mi equipo? -Aplicarán un ASAT. (Aporte Significativo de Aprendizaje de la Tarea o Taller). -Para el ensayo del tema respetivo se Tomarán lo lineamientos más importantes de la introducción llamativa, fundamentación y conclusión crítica.

Page 11: Estructura silvia

11

MEDIO CICLO FINAL DE CICLO EXAMEN DE RECUPERACIÓN

ASISTENCIA

EXÁMENES (30%) 15 15 ACT. EN EL AULA (40%)

Tareas 5 5 Ejercicios de aplicación 2.5 2.5 Lecciones orales 2.5 2.5 Pruebas escritas 5 5

Participación 2.5 2.5 Exposiciones 2.5 2.5

ACTIVIDADES DE INVESTIGACIÓN PORTAFOLIO PROYECTO INFORME FINAL (30%)

5 10

5

10

TOTAL 50% 50% 100%

Reequilibrados en árboles

AVL por borrado de un nodo. Resolución de ejercicios

demostrativos y de

planteamiento de problemas.

V.- METODOLOGÍA Y RECURSOS

Se aplicará un PEA, Dinámica de integración y socialización, documentación, presentación de los temas de clase y objetivos, lectura de motivación

y video del tema, técnica lluvia de ideas, para interactuar entre los receptores, aplicando el ciclo del aprendizaje.

Se aplicaran talleres con ASAT (aporte significativos de los aprendizajes de tareas o talleres)

Revisión de la clase programada antes del día señalado para la sesión correspondiente (blog-docente)

Consultas, tareas y talleres se entregarán en archivo escrito al docente y en archivo lógico al área de contacto del curso.

Los recursos disponibles para el curso serán: pizarra tiza líquida(4), proyector, internet inalámbrico, dispensador de agua, aire acondicionado,

mesas de trabajo en equipo, proyector para equipos de trabajos en su lugar respectivo, sistema de audio, impresora de última generación,

computadores(2) del aula,1 portátiles por equipo del estudiante, libros-CD-interactivo- pdf., blog. del estudiante y del docente para interactividad

y fortalecimiento continúo.

VI.- PLANEACIÓN DE LA EVALUACIÓN Las evaluaciones estarán orientadas a los procesos, lo que conlleva a que ninguna evaluación tenga una ponderación determinante para la acreditación. Durante el periodo académico, el estudiante de la Universidad Técnica de Manabí, se someterá obligatoriamente a los siguientes parámetros de evaluación de los aprendizajes: evaluación de medio ciclo, evaluación de final de cic lo, evaluación de actividades varias y evaluaciones de investigaciones.

ACREDITACIÓN

Page 12: Estructura silvia

12

VI.- BIBLIOGRAFÍA a.- Bibliografía Básica:

AUTOR TÍTULO DE LIBRO EDICIÓN AÑO PUBLICACIÓN EDITORIAL MARTÍNEZ, Román Estructura de Datos, Referencia

practica con objetos orientados a objetos

7° 2008 Elda Quiroga

TORRES, Christian Manuales de estructura de Datos en C++

1° 2010 Estudiantil-FCI-UTM. Ecuador

b.- Bibliografía Recomendada: AUTOR TÍTULO DE LIBRO EDICIÓN AÑO PUBLICACIÓN EDITORIAL

Garrido Antonio Abstracción y Estructura de Datos en C++

1° 2006 Delta Publicaciones S. L.

c.- Lecturas complementarias: http://c.conclase.net/edd/.

http//www.utm.edu.ec

http://evirtual.utm.edu.ec/course/view.php?id=25

robotica.uv.es/pub/Libro/PDFs/CAPI5.pdf

www.dc.uba.ar › ... › Algoritmos y Estructuras de Datos II

http://www.programacion.com/articulo/estructuras_de_datos_y_algoritmos_en_java_309/2

http://www.youtube.com/watch?v=tOOEff1r-tk

VII.- COMPROMISO ÉTICO

Escuchar y respetar democráticamente el criterio de los demás.

Hacer silencio cuando alguien esté haciendo uso de la palabra.

Mantener el aula limpia, evitando botar basura en el piso

No deteriorar ni rayar, las paredes, mesas y sillas.

Procurar en todo momento la correcta manipulación y utilización de los equipos informáticos.

La asistencia es obligatoria a todas las actividades programadas en esta asignatura.

El estudiante ingresará a clase a la hora establecida y solo por una ocasión se aceptará el retraso de 10 minutos.

El estudiante por ningún concepto utilizará celulares en el aula, igual comportamiento tendrá el docente.

El intento de copia de cualquier estudiante será sancionado con la calificación de cero y no habrá oportunidad de

recuperación, independiente de las sanciones establecidas por la universidad.

Los trabajos se entregarán en la fecha establecida y no se recibirá en otra oportunidad.

El estudiante ingresará al aula sin gorra y no consumirá alimentos dentro del aula.

El trabajo escrito será realizado con las propias palabras e ideas del estudiante. Si se descubre la copia textual de un

párrafo o un texto se calificará con cero.

Lugar y fecha: Portoviejo, 6 de Mayo del 2013

Ing. Christian Ronald Torres Morán (f) Docente (f) Coordinador

ANEXO. N° 1

Page 13: Estructura silvia

13

a

b

c

d

e

f

g

h

i

j

k

A

M

B

RESULTADOS DE APRENDIZAJE DE LA CARRERA ESPECÍFICOS A LOS QUE APUNTA LA MATERIA (ABET).

a. Capacidad de realizar análisis, síntesis y aplicación de las matemáticas y ciencias básicas en la solución de problemas de ingeniería en sistemas informáticos.

b. Capacidad de planificar, diseñar, conducir e interpretar resultados de experimentos orientados a la informática.

c. La capacidad de diseñar sistemas, procesos, modelos y componentes informáticos que cumplan los estándares nacionales o internacionales, tomando en cuenta las limitaciones económicas, ambientales, sociales, políticas, de salud y seguridad del entorno, y cumpliendo satisfactoriamente con las especificaciones y restricciones existentes o indicadas por los interesados o por los criterios de sostenibilidad.

d. Capacidad para funcionar como parte de un equipo de profesionales de distintas áreas del conocimiento, demostrando una efectiva cooperación, comunicación, con habilidades para resolver conflictos y contribuyendo proactivamente en la propuesta de líneas estratégicas desde el punto de vista informático, para la solución de problemas.

e. Capacidad para identificar, formular, evaluar y resolver técnicamente problemas de ingeniería planteados de acuerdo a las necesidades del medio.

f. Capacidad para comprender, reconocer y aplicar valores y códigos de ética profesional, que le permitan desenvolverse sin perjudicar a sus clientes y contribuyendo al desarrollo de la sociedad.

g. Habilidad para presentar efectivamente, ideas, proyectos, informes de investigaciones, documentos de trabajo de manera escrita, oral y digital, utilizando las herramientas de las nuevas tecnologías de la información.

h. Habilidad y capacidad para comprender el impacto de las soluciones informáticas a la realidad local, nacional e internacional en un contexto económico global, ambiental y social.

i. Habilidad y aptitud para ser un profesional con el compromiso del aprendizaje continuo, con capacidad para reconocer las oportunidades para mejorar en su campo profesional.

j. Habilidad para identificar temas y problemas de actualidad con respecto al entorno local, regional y global, con el fin de relacionarlos con propuestas de soluciones creativas y eficientes.

k. Capacidad y destreza para utilizar técnicas, habilidades y herramientas en el desarrollo de software y hardware para implementar soluciones a problemas de su profesión.

Contribución de la materia a los resultados de aprendizaje de la carrera: A: Alta M: M

Page 14: Estructura silvia

14

Page 15: Estructura silvia

15

UNIVERSIDAD TÉCNICA DE MANABÍ FACULTAD DE CIENCIAS INFORMÁTICAS CARRERA DE

INGENIERIA DE SISTEMAS INFORMÁTICOS

CARTA DE PRESENTACIÓN

Este portafolio presenta mi trayectoria en el curso de:

ESTRUCTURA DE DATOS, este curso tiene como objetivos desarrollar las destrezas de agilidad mental, retentiva y el intelecto durante este semestre pude conocer sobre Estructura de datos, sobre las GENERALIDADES Y DEFINICIONES DE ESTRUCTURA DE DATOS como: Definición, variables, tipos de datos, representación graficas de las estructura de datos, Acceso a las estructura de datos(Estáticas), tipos de Estructuras de Datos, Diferencia entre gestión Estática y Dinámica, Operaciones con varios punteros, Asignación dinámica de memoria, Liberación dinámica de memoria, La contante NULL, Ventajas y desventajas de punteros. : ESTRUCTURAS SIMPLES Y COMPUESTAS: Listas abiertas, Definición de listas abiertas, Declaración e implementación de una lista, Operaciones con listas, Inserción de un nodo, Búsqueda de un nodo, Recorridos de una lista, Eliminación de un nodo, Listas y Archivos, Variaciones de lista.

Page 16: Estructura silvia

16

Page 17: Estructura silvia

17

UNIVERSIDAD TÉCNICA DE MANABÍ FACULTAD DE CIENCIAS INFORMÁTICAS

CARRERA DE INGENIERIA DE SISTEMAS INFORMÁTICA

Mi nombre es SILVIA PATRICIA DELGADO MERA, estoy en segundo semestre de la facultad ciencias informáticas, soy una persona muy comprensiva y además de eso me gusta ayudar a las personas cuando más lo necesite, yo estoy aquí con un propósito de ser una buen ingeniero en sistemas y así poder progresar en mi carrera profesionEstando aquí en estos dos años aprendido muchos de todos mis profesores que he cruzado hasta hora, después vendrá nuevas ideas y nuevas enseñanza dentro de la Universida

Page 18: Estructura silvia

18

FACULTAD CIENCIAS INFORMATICAS

VISIÓN Generarme destacadamente como un profesional con principios y valores en el campo de las Ciencias Informáticas, alcanzando todas mis metas y objetivos propuestos, adquiriendo día a día nuevos conocimientos siendo protagonistas del progreso regional y nacional.

MISIÓN

Contribuir con todos mis conocimientos y capacidades profesionales de las Ciencias Informáticas a las soluciones de los problemas que se presenten, que con honestidad, equidad, disciplina y solidaridad dar respuestas a las necesidades de la sociedad elevando su nivel de vida.

Page 19: Estructura silvia

19

UNIVERSIDAD TÉCNICA MANABÍ

MISIÓN

Formar académicos, científicos y profesionales responsables, humanistas, éticos y solidarios, comprometidos con los objetivos del desarrollo nacional, que contribuyan a la solución de los problemas del país como universidad de docencia con investigación, capaces de generar y aplicar nuevos conocimientos, fomentando la promoción y difusión de los saberes y las culturas, previstos en la Constitución de la República del Ecuador.

VISIÓN

Ser una institución universitaria, líder y referente de la educación superior en el Ecuador, promoviendo la creación, desarrollo, transmisión y difusión de la ciencia, la técnica y la cultura, con reconocimiento social y proyección regional y mundial.

Page 20: Estructura silvia

20

FACULTAD CIENCIAS INFORMÁTICAS

MISIÓN

Formar profesionales eficientes e innovadores en el campo de las ciencias informáticas, que con honestidad, equidad y solidaridad, den respuestas a las necesidades de la sociedad elevando su nivel de vida.

VISIÓN

Ser una unidad con alto prestigio académico, con eficiencia, transparencia y calidad en la educación, organizada en sus actividades, protagonistas del progreso regional y nacional.

Page 21: Estructura silvia

21

ETAPA 4

DIARIO METACOGNITIVO

Page 22: Estructura silvia

22

UNIVERSIDAD TÉCNICA DE MANABÍ FACULTAD DE CIENCIAS INFORMÁTICAS

CARRERA DE INGENIERIA DE SISTEMAS INFORMÁTICOS ESTRUCTURA DE DATOS

SEGUNDO SEMESTRE CLASE Nº 1

PERIODO: Del 06 de mayo. 2013 al 24 de sept. del 2013 TIEMPO: 5 HORAS EN DOS JORNADAS DE 2 Y 3 HORAS FECHA: Lunes, 06 de mayo 2013 DOCENTE GUIA: Ing. Christian Torres Morán

1.- ENTRADA DE LOS ESTUDIANTES.

2.- PRESENTCION DEL DOCENTE A LOS ESTUDIANTES.

ING. CHRISTIAN TORRES MORAN

3.- NOS INDICO LA CLAVE PARA EL INGRESO DEL AULA VRTUAL.

4.- ELECCIÓN DEL ASISTENTE DEL DOCENTE FACILITADOR..

5.- INDICACION DEL SYLABUS.

6.- INDICACION DEL PORTAFOLIO.

7.- CONTINUACION CON C++.

ISED2B

Page 23: Estructura silvia

23

TEMA: Aplicación de la programación básica.

INTRODUCCION Las estructuras básicas disponibles en C y C++ (structs y arrays) tienen una importante limitación: no puede cambiar de tamaño durante la ejecución. Los arrays están compuestos por un determinado número de elementos, número que se decide en la fase de diseño, antes de que el programa ejecutable sea creado.

EJERCICIO DE ESTRUCTURA DE DATO

#include <conio.h> #include<stdio.h> void main() { clrscr(); char nom[30]; int edad; struct struct.curso2; printf("INGRESE EL NOMBRE: "); scanf("%s",curso2nom); printf("INGRESE LA EDAD: "); scanf("%d",&curso2.edad); printf("\n EL ESTUDIANTE %s TIENE %d AÑOS DE EDAD",curso2nom,curso2edad); getch(); }

Page 24: Estructura silvia

24

10>=9

TEMA: Array y Inicialización

Una pequeña explicación sobre los arrays.

Ejemplo

Hacer un programa que nos cree un arrays.

#include <iostream> #include <stdio.h> using namespace std; int main() { int a[]={1,1,2,3,5,8,13,21}; cout<<"\n los numeros del array son:"; for(int i=0;i<8;i++) cout<<"\n a[%d]=%d",i,a[i]; cin.get();cin.get();

TF

TF>= TL

10>=9

10>=10

Page 25: Estructura silvia

25

return 0; }

INICIALIZAR Hacer una matriz de 3*3 donde la diagonal principal sea de puros 1 y los demás espacios ceros. 1.- Forma #include <iostream> using namespace std; int main() { int matriz[3][3] = {1,0,0,0,1,0,0,0,1}; for(int i = 0;i<3;i++) { for(int j = 0;j<3;j++) { cout << matriz[i][j] << " "; } cout << endl; } cin.get(); return 0; }

Page 26: Estructura silvia

26

2.- Forma #include <iostream> using namespace std; int main() { int matriz[3][3]; for(int i = 0;i<3;i++) { for(int j = 0;j<3;j++) { if(i == j) matriz[i][j] = 1; else matriz[i][j] = 0; } } for(int i = 0;i<3;i++) { for(int j =0;j<3;j++) { cout << matriz[i][j] << " "; } cout << endl; } cin.get(); return 0; }

Page 27: Estructura silvia

27

3.- Forma #include <iostream> using namespace std; int main() { int matriz[3][3]; matriz[0][0] = 1; matriz[0][1] = 0; matriz[0][2] = 0; matriz[1][0] = 0; matriz[1][1] = 1; matriz[1][2] = 0; matriz[2][0] = 0; matriz[2][1] = 0; matriz[2][2] = 1; for(int i = 0;i<3;i++) { for(int j = 0;j<3;j++) { cout << matriz[i][j] << " "; } cout << endl; } cin.get(); return 0; }

Page 28: Estructura silvia

28

UNIVERSIDAD TÉCNICA DE MANABÍ

FACULTAD DE CIENCIAS INFORMÁTICAS CARRERA DE INGENIERIA DE SISTEMAS INFORMÁTICOS

ESTRUCTURA DE DATOS SEGUNDO SEMESTRE

Clase #2

PERIODO: Del 06 de mayo. 2013 al 24 de sept. del 2013

TIEMPO: 5 HORAS EN DOS JORNADAS DE 2 Y 3 HORAS FECHA: Lunes, 13 de mayo 2013 DOCENTE GUIA: Ing. Christian Torres Morán

TEMA: Creación de una estructura básica

struct[ Etiqueta] Nombre de la estructura

Campo 1; Campo o miembro de la estructura

Campo 2;

; Termina en punto y coma

struct { char nom [40]; char ced [10]; int edad; char direc [50];

Page 29: Estructura silvia

29

char tel [10]; }

ESTRUCTURA ANIDADAS

a) Por su almacenamiento .-. Se clasifican en:

Internas Externas

Internas: Son aquellas estructuras se almacenan en la memoria principal. Externas: Son aquellas que se almacenan en las memorias secundarias de

sistemas de computadoras.

Page 30: Estructura silvia

30

EJEMPLO DE ESTRUCTURAS INTERNAS

#include<conio.h> #include<stdio.h> struct empresa { struct información { char nombre[20]; char dirección[20]; char teléfono[10]; }empre; struct proveedor_ { char nombre[20]; char dirección[20]; char teléfono[10]; char ciudad[26]; }proveedor; struct cliente_ { char nombre[20]; char cedula[10]; char dirección[20]; }cliente[60];

Page 31: Estructura silvia

31

struct producto_ { char nombre[20]; int cant; float pvp; }producto; }; void main() { struct empresa E; scanf("%s", E.cliente[0].nombre); }

Page 32: Estructura silvia

32

EJEMPLO DE ESTRUCTURA EXTERNA

#include<conio.h> #include<stdio.h> struct datos { char nombre[20]; char dirección[50]; }; struct information { struct dato dato; char teléfono[10]; }; struct proveedor_ { struct datos dato; char teléfono[10]; char ciudad[25]; } ; struct producto_ { char nombre[20]; int cant; float pvp; }producto; struct empresa { struct informativo empresa; struct proveedor_ proveedor;

Page 33: Estructura silvia

33

struct datos cliente[60]; struct producto_ producto; }; void main() { struct empresa E; struct proveedor_ proveedor[60]; scanf("%s", E.proveedor.dato.nombre); }

Page 34: Estructura silvia

34

UNIVERSIDAD TÉCNICA DE MANABÍ FACULTAD DE CIENCIAS INFORMÁTICAS

CARRERA DE INGENIERIA DE SISTEMAS INFORMÁTICOS ESTRUCTURA DE DATOS

SEGUNDO SEMESTRE Clase #3

PERIODO: Del 06 de mayo. 2013 al 24 de sept. del 2013

TIEMPO: 5 HORAS EN DOS JORNADAS DE 2 Y 3 HORAS FECHA: Lunes, 13 de mayo 2013 DOCENTE GUIA: Ing. Christian Torres Morán

TEMA: Inicialización de una variable estructurada

Inicialización de una variable estructurada

A las estructuras se les pueden dar valores iniciales de manera análoga

a como hacíamos con los arrays. Primero tenemos que definir la estructura y luego cuando declaramos una variable como estructura le damos el valor inicial que queramos. Recordemos que esto no es en absoluto necesario.

La definición de la estructura es: struct estructura_amigo{ char nombre[14]; char apellido[14]; char teléfono[12]; int edad;

Page 35: Estructura silvia

35

};

Ejercicio en clase El ampersan nos muestra las direcciones de memoria de las variables.

#include<iostream> #include<conio.h> #include<stdio.h> struct datos { char nombre[15]; char apellido[15]; int cedula; char ciudad[15]; float sueldo; char departamento[15]; }; char mat

[1][6][15]={"juan","macias","1312868720","portoviejo","ventas","750"}; int main() { struct empleo ; int c; for( int c=0; c<6; c++) cout<<&mat[0][c]<<

"\t"; getch(); cin.get();cin.get(); return 0; };

Page 36: Estructura silvia

36

EJERCICIO EN CLASE

#include <iostream.h> #include <stdio.h> struct Datos { char cedula[15]; char nombre[15]; char apellido[15]; char ciudad[15]; char departamento_de_trabajo[15]; float sueldo; }; int main() { Datos empleado; cout << "Cedula: ";fflush(stdout); cin >> empleado.cedula; cout << "Nombre: ";fflush(stdout); cin >> empleado.nombre; cout << "Apellido: ";fflush(stdout); cin >> empleado.apellido; cout << "Departamento: ";fflush(stdout); cin >> empleado.departamento_de_trabajo; cout << "Sueldo: ";fflush(stdout); cin >> empleado.sueldo; cout << endl << endl; cout << "La cedula es : " << empleado.cedula << endl; cout << "El empleado se llama " << empleado.nombre << " " << empleado.apellido << endl; cout << "La ciudad donde vive es " << empleado.ciudad << endl; cout << "El departamento donde vive es: " << empleado.departamento_de_trabajo << endl; cout << "Su sueldo es de: " << empleado.sueldo; cin.get();cin.get(); return 0;

Page 37: Estructura silvia

37

}

Page 38: Estructura silvia

38

UNIVERSIDAD TÉCNICA DE MANABÍ FACULTAD DE CIENCIAS INFORMÁTICAS

CARRERA DE INGENIERIA DE SISTEMAS INFORMÁTICOS ESTRUCTURA DE DATOS

SEGUNDO SEMESTRE Clase #4

PERIODO: Del 06 de mayo. 2013 al 24 de sept. del 2013

TIEMPO: 5 HORAS EN DOS JORNADAS DE 2 Y 3 HORAS FECHA: Miercoles, 15 de mayo 2013 DOCENTE GUIA: Ing. Christian Torres Morán

TEMAS: Estructuras

EJERCICIOS

#include <iostream.h> #include <stdio.h> struct venta { char nombres[10]; char apellidos[10]; float sueldos; char departamento_de_trabajo[10]; float ventas; }; int main() {

Page 39: Estructura silvia

39

struct venta datos[5]; for(int b=0;b<5;b++) { cout<<"ingrese nombres: "; cin>> datos[b].nombres; cout<<"ingrese apellidos:"; cin>> datos[b].apellidos; cout<<"ingrese sueldos:"; cin>> datos[b].sueldos; cout<<"ingrese departamnento-de_trabajo:"; cin>> datos[b].departamento_de_trabajo; cout<<"ingrse ventas:"; cin>> datos[b].ventas; } cout << endl << endl; for(int c=0;c<5;c++) { cout<< "nombre:"<<datos[c].nombres<<endl; cout<< "apellidos:"<<datos[c].apellidos<<endl; cout<< "sueldos:"<<datos[c].sueldos<<endl; cout<< "departamento_de_trabajo:"<<datos[c].departamento_de_trabajo<<endl; cout<< "ventas:"<<datos[c].ventas<<endl; } cin.get(); cin.get(); return 0; }

Page 40: Estructura silvia

40

#include<iostream> #include<conio.h> #include<stdio.h> struct datos { char nombre[15];

int cont;

float pvp;

};

struct empresa

{

struct informativo empre;

//struct datos cliente[200];

//struct producto_ producto;

int nproveedor;

struct proveedor_ proveedor[200];

};

void main()

Page 41: Estructura silvia

41

{

struct empresa e={{{"Juan S.A.","UTM","136111"},"2568478"}};

int op,i;

do

{

clrscr();

printf("\n1.- ver datos de la empresa");

printf("\n2.- ingreso de proveedor para la empresa");

printf("\n3.- ver proveedores de la empresa");

printf("\n4.- productos de la empresa");

printf("\n5.- ver productos de la empresa");

printf("\n6.- salir");

scanf("%d",&op);/*if(op==1){clrscr();

printf("Registro de los datos de la empresa");

printf("\nRUC");scanf("%s",e.empre.dato.ruc);

printf("\nNombre");scanf("%s",e.empre.dato.nombre);

printf("\nDireccion");scanf("%s",e.empre.dato.direccion);

printf("\nTelefono");scanf("%s",e.empre.telefono);

e.nproveedor=0;}*/if(op==1){clrscr();

printf("datos de la empresa");

printf("\nRUC: %s",e.empre.dato.ruc);

printf("\nNombre: %s",e.empre.dato.nombre);

printf("\nDirrecion: %s",e.empre.dato.direccion);

printf("\nTelefono: %s",e.empre.telefono);

Page 42: Estructura silvia

42

getch();

}

else if(op==2)

{

clrscr();

printf("Registro de proveedore # %d",e.nproveedor+1);

printf("\nRUC\t");

scanf("%s",e.proveedor[e.nproveedor].dato.ruc);

printf("\nNombre\t");

scanf("%s",e.proveedor[e.nproveedor].dato.nombre);

printf("\nDireccion\t");

scanf("%s",e.proveedor[e.nproveedor].dato.direccion);

printf("\nTelefono\t");

fflush(stdin);

scanf("%s",e.proveedor[e.nproveedor].telefono);

printf("\nCiudad\t");

scanf("%s",e.proveedor[e.nproveedor].ciudad);

e.nproveedor++;

}

else if (op==3)

{

clrscr();

printf("Informacion de proveedores\n");

printf("RUC\t\tNombre\t\tDireccion\ttelefono\tcuidad");

for(i=0;i<e.nproveedor;

Page 43: Estructura silvia

43

UNIVERSIDAD TÉCNICA DE MANABÍ FACULTAD DE CIENCIAS INFORMÁTICAS

CARRERA DE INGENIERIA DE SISTEMAS INFORMÁTICOS ESTRUCTURA DE DATOS

SEGUNDO SEMESTRE Clase #4

PERIODO: Del 06 de mayo. 2013 al 24 de sept. del 2013

TIEMPO: 5 HORAS EN DOS JORNADAS DE 2 Y 3 HORAS FECHA: Lunes, 20 de mayo 2013 DOCENTE GUIA: Ing. Christian Torres Morán

TEMA: Funciones

Las estructuras se pueden pasar directamente a una función igual que hacíamos con las variables. Una función es un módulo de un programa separado delcuerpo principal, que realiza una tarea específica y que puede un valor a la parte principal del programa u otra función. La forma general de una función es: Tipodato Nomfun(parámetros) { Cuerpo de instrucciones; return[dato,var,expresión] }

Page 44: Estructura silvia

44

EJERCICIOS #include<iostream.> #include<conio.h> #include<stdio.h> Using namespace std;

struct amigo { char nombre[30]; char apellido[30]; char cedula[15]; int edad; }; struct amigo datos = { "henry","cedeño","1315717940",18, }; int suma_edad(struct amigo datos_2) { datos_2.edad = 40; return datos_2.edad+30; } int main() { cout << "\n\nNombre: " << datos.nombre << endl; cout << "Apellido: " << datos.apellido << endl; cout << "Cedula: " << datos.cedula << endl; cout << "Edad: " << suma_edad(datos)<< endl;

Page 45: Estructura silvia

45

cout << "Edad_2: " << datos.edad; cin.get(); return 0; }

Page 46: Estructura silvia

46

UNIVERSIDAD TÉCNICA DE MANABÍ FACULTAD DE CIENCIAS INFORMÁTICAS

CARRERA DE INGENIERIA DE SISTEMAS INFORMÁTICOS ESTRUCTURA DE DATOS

SEGUNDO SEMESTRE Clase #5

PERIODO: Del 06 de mayo. 2013 al 24 de sept. del 2013

TIEMPO: 5 HORAS EN DOS JORNADAS DE 2 Y 3 HORAS FECHA: Miercoles, 22 de mayo 2013 DOCENTE GUIA: Ing. Christian Torres Morán

TEMA: Punteros Son tipos de datos simples capaces de almacenar la posición de una variable en memoria principal. Se dice que ellos direccionan a otras variables. Una variable puntero se declara como todas las variables. Debe ser del mismo tipo que la variable apunta. Se identifica con un (*): int *punt Es una variable puntero que apunta a variable que contiene un dato de tipo entero llamada punt Char*car:

Page 47: Estructura silvia

47

EJERCICIOS

#include <iostream> using namespace std; int main() { int num; cout << "Ingresar: "; cin >> num; cout <<"\n"<< "Direccion de memoria de num: " << &num; cout << "\n"<< "Creacion de un puntero" << endl; int *punt = &num; cout << "\n" << punt; cout << "\n" << "Prueba de puntero" << endl; cout << "*punt: " << *punt; *punt = 15; cout <<endl<<"*punt: " << *punt; cin.get(); cin.get(); return 0;

Page 48: Estructura silvia

48

}

EJERCICIOS

#include <iostream> using namespace std; int main() { char num = 0x98fc3f4a; char *puntero_malo = &num; cout << "int num = 0x98fc3f4a\n\n"; cout << "char *puntero_malo = &num\n\n"; cout << "*puntero_malo: " << *puntero_malo; cin.get();

Page 49: Estructura silvia

49

return 0; }

EJERCICIO

#include<conio.h> #include<stdio.h> #include<iostream.h> void main() {clrscr(); int mat[5]={20,3,8,90,10}; int i, *q; cout<<"Direccion"<<"----"<<"Contenido"<<"\n"; for (i=0;i<5;i++)

Page 50: Estructura silvia

50

cout<<&mat[i] <<" ---- "<<mat[i]<<"\n"; cout<<"\nDireccion"<<"----"<<"Contenido"<<"\n"; for (i=0;i<5;i++) cout<<mat+i <<" ---- "<<*(mat+i)<<"\n"; q=mat; //q=&mat[0]; cout<<"\nDireccion"<<"----"<<"Contenido"<<"\n"; for (i=0;i<5;i++) {cout<<q <<" ---- "<<*(q)<<"\n"; q++; } getch(); }

Page 51: Estructura silvia

51

EJERCICIO

#include<conio.h> #include<stdio.h> #include<iomanip.h> struct fecha{int dia; int mes; int anio; }; void Pidefecha(struct fecha &f); void Verfecha(struct fecha f); //void Suma(int d); void Verfecha(struct fecha f) { cout << setfill('0') << setw(2) << f.dia << '/' << setw(2) << f.mes << '/' << setw(4) << f.anio; } void Pidefecha(struct fecha &f) { char ch; cout << "Escriba la Fecha de la forma dd/mm/aa:"; cin >> f.dia >> ch >> f.mes >> ch >> f.anio; } //crear el main void main() {clrscr(); struct fecha f1; Pidefecha(f1); cout << "\nFecha ingresada: "; Verfecha(f1); cout << " \nHe terminado.."; getch();

Page 52: Estructura silvia

52

}

UNIVERSIDAD TÉCNICA DE MANABÍ FACULTAD DE CIENCIAS INFORMÁTICAS

CARRERA DE INGENIERIA DE SISTEMAS INFORMÁTICOS ESTRUCTURA DE DATOS

SEGUNDO SEMESTRE Clase #6

PERIODO: Del 06 de mayo. 2013 al 24 de sept. del 2013

TIEMPO: 5 HORAS EN DOS JORNADAS DE 2 Y 3 HORAS FECHA: Lunes, 27 de mayo 2013 DOCENTE GUIA: Ing. Christian Torres Morán

TEMA: Listas simple

DEFINICION

La forma más simple de estructura dinámica es la lista abierta. En esta forma los nodos se organizan de modo que cada uno apunta al siguiente, y el último no apunta a nada, es decir, el puntero del nodo siguiente vale NULL.

En las listas abiertas existe un nodo especial: el primero. Normalmente diremos que nuestra lista es un puntero a ese primer nodo y llamaremos a ese nodo la cabeza de la lista. Eso es porque mediante ese único puntero podemos acceder a toda la lista.

Cuando el puntero que usamos para acceder a la lista vale NULL, diremos que la lista está vacía.

El nodo típico para construir listas tiene esta forma:

Page 53: Estructura silvia

53

struct nodo { int dato;

struct nodo *siguiente;

};

Declaraciones de tipos para manejar listas en C

typedef struct _nodo { int dato; struct _nodo *siguiente; } tipoNodo; typedef tipoNodo *pNodo; typedef tipoNodo *Lista;

tipoNodo es el tipo para declarar nodos, evidentemente.

pNodo es el tipo para declarar punteros a un nodo.

Lista es el tipo para declarar listas, como puede verse, un puntero a un nodo y una lista son la misma cosa. En realidad, cualquier puntero a un nodo es una lista, cuyo primer elemento es el nodo apuntado.

Operaciones básicas con listas ^

Con las listas tendremos un pequeño repertorio de operaciones básicas que se pueden realizar:

Añadir o insertar elementos.

Buscar o localizar elementos.

Page 54: Estructura silvia

54

Borrar elementos.

Moverse a través de una lista, anterior, siguiente, primero.

Cada una de estas operaciones tendrá varios casos especiales, por ejemplo, no será lo mismo insertar un nodo en una lista vacía, o al principio de una lista no vacía, o la final, o en una posición intermedia.

#include<string.h> typedef struct agenda { char nombre[25]; char apellido[25]; char fono[18]; char correo[40]; int edad ; } _agenda; void ingresar (_agenda &a, char nom[], char ape[], char fon[], char cor[],int e); void mostrar (_agenda a); void main() { clrscr(); _agenda amigo1,amigo2 ; ingresar(amigo1,"segundo","b","121345678","[email protected]",29); ingresar(amigo2,"silvia","delgado","052777665","[email protected]",37); mostrar(amigo1); mostrar(amigo2); getch(); } void ingresar (_agenda &a, char nom[],char ape[],char fon[], char cor[],int e){strcpy (a.nombre,nom); strcpy (a.apellido,ape); strcpy (a.fono,fon); strcpy (a.correo,cor);a.edad=e ;

Page 55: Estructura silvia

55

} void mostrar (_agenda a){ _agenda *q=&a;printf("\nNombre: %s\n Apellido: %s\n fono: %s\n Correo: %s\n edad: %d",q->nombre,q->apellido,q->fono,q->correo,q->edad); getch() }

Page 56: Estructura silvia

56

UNIVERSIDAD TÉCNICA DE MANABÍ FACULTAD DE CIENCIAS INFORMÁTICAS

CARRERA DE INGENIERIA DE SISTEMAS INFORMÁTICOS ESTRUCTURA DE DATOS

SEGUNDO SEMESTRE Clase #7

PERIODO: Del 06 de mayo. 2013 al 24 de sept. del 2013

TIEMPO: 5 HORAS EN DOS JORNADAS DE 2 Y 3 HORAS FECHA: Lunes, 03 de JUNIO 2013 DOCENTE GUIA: Ing. Christian Torres Morán

TEMA: Lista Simple Abierta

#include<conio.h> #include<stdio.h> #include<iostream.h> #include<iomanip.h> struct control_asistencia{ char est[45]; char nivel[30]; char paralelo; char aula[7]; char hinicio[6]; char hfin[6]; int dia; int mes; int anio; }; void registrar(control_asistencia *c);

Page 57: Estructura silvia

57

void imprimir(control_asistencia c); //implementación void registrar(control_asistencia *c) {clrscr(); printf("\nIngreso de Información\n"); printf("\n Ingrese el nombre del estudiante:"); cin>>c->est; printf("\n Ingrese el nivel:"); cin>>c->nivel; printf("\n Ingrese el paralelo:"); cin>>c->paralelo; printf("\n Ingrese el codigo del aula:"); cin>>c->aula; printf("\n Ingrese la hora de inicio:"); cin>>c->hinicio; printf("\n Ingrese la hora final:"); cin>>c->hfin; char ch; printf("\nIngrese la fecha en formato dd/mm/yyyy"); cin>>c->dia>>ch>>c->mes>>c->anio; cout<<"Ingreso finalizado..."; getch(); } void imprimir(control_asistencia c) {clrscr(); cout<<"Datos Ingresados\n"; cout<<"Estudiante"<<"\t"<<"Nivel"<<"Paralelo"<<"\t"<<"Aula"<<"\t"<<"Hora Incio"<<"\t"<<"Hora Fin"<<"\t"<<"fecha";

Page 58: Estructura silvia

58

cout<<setw(10)<<c.est<<setw(8)<<c.nivel<<setw(5)<<c.paralelo<<setw(6)<<c.aula<<setw(6)<<c.hinicio<<setw(6)<<c.hfin<<setw(2)<<c.dia<<"/"<<setw(2)<<c.mes<<"/"<<setw(4)<<c.anio<<endl; } void main() {control_asistencia E; registrar(&E); imprimir(E); getch(); }

Page 59: Estructura silvia

59

UNIVERSIDAD TÉCNICA DE MANABÍ

FACULTAD DE CIENCIAS INFORMÁTICAS CARRERA DE INGENIERIA DE SISTEMAS INFORMÁTICOS

ESTRUCTURA DE DATOS SEGUNDO SEMESTRE

Clase #8

PERIODO: Del 06 de mayo. 2013 al 24 de sept. del 2013

TIEMPO: 5 HORAS EN DOS JORNADAS DE 2 Y 3 HORAS FECHA: Miercoles , 05 de JUNIO 2013 DOCENTE GUIA: Ing. Christian Torres Morán

TEMA: Lista Simple Abierta

EJEMPLO #include <iostream> using namespace std; { typedef struct _Alumnos char nombre[25]; struct _alumnos *sig; } typedef tipoAlumno *pnodo; typedef tipoAlumno *lista; /* tipoAlumno; **********************

Page 60: Estructura silvia

60

struct alumnos { char nombre[25]; struct _alumnos *sig; }; typedef struct_alumnos tipoAlumno; ************************* */ // FUNCIONES PROTOTIPOS void almacenar(lista *l, char c[]); void ver_lista(lista l; void main() { lista l1=NULL; almacenar(&l1," ana maria"); ver_lista(l1); void almacenar(lista *l, char c[]); { pnodo nodo; nodo=new(pnodo); if(nodo==NULL) { cout<< "\n sin espacio de memoria"; return; } //se llena la informacion del nodo strcpy(nodo->nom.c); // procedo hacer los enlaces if !(*l) { // es el primer nodo que va a ingresar a la lista

Page 61: Estructura silvia

61

nodo->sig=NULL; *l=nodo; } EJERCICIO #include <conio.h> #include <stdio.h> #include <iostream.h> #include <stdlib.h> #include <string.h> typedef struct _alumnos{ char nom[25]; struct _alumnos *sig; }tipoAlumno; typedef tipoAlumno *pnodo; typedef tipoAlumno *Lista; //Funciones prototipo void almacenar (Lista *l , char c[]); //paso parametro doblepuntero void ver_lista(Lista l); void almacenar_fin (Lista *l , char c[]); void Almacenar_ord(Lista *l, char c[]); void main() { Lista L1= NULL; // L1 es puntero se inicializa con null la cabecera int op; char nom[30]; do{ clrscr(); cout<<"\n 1. Registrar nombre al inicio";

Page 62: Estructura silvia

62

cout<<"\n 2. Registrar nombre al final"; cout <<"\n 3. Registro ordenado"; cout<<"\n 4. Mostrar Lista"; cout<<"\n 5. Salir\n\n "; do{ cin>>op; switch(op) { case 1: cout<<"\nREGISTRO DE NUEVO CLIENTE AL INICIO\n"; cout<<"\n Ingrese los nombres: "; fflush(stdin); gets(nom); almacenar(&L1,nom); break; case 2: cout<<"\nREGISTRO DE NUEVO CLIENTE AL FINAL\n"; cout<<"\n Ingrese los nombres: "; fflush(stdin); gets(nom); almacenar_fin(&L1,nom); break; case 3: cout << "\REGISTRO ORDENADO\n"; cout <<"\nIngrese los nombre: ";fflush(stdin); gets(nom); Almacenar_ord(&L1,"Vargas N"); Almacenar_ord(&L1,"Espinales S"); Almacenar_ord(&L1,"Delgado S"); Almacenar_ord(&L1,"Murillo S"); Almacenar_ord(&L1,"Molina K"); Almacenar_ord(&L1,"Balda J"); break; case 4: ver_lista(L1); getch(); } }while((op>5)||(op<1)); }while(op!=5); }

Page 63: Estructura silvia

63

void almacenar (Lista *l , char c[]) { pnodo nodo; nodo = (pnodo) malloc (sizeof(tipoAlumno)); if (nodo==NULL) { cout<<"\n Sin espacio de memoria " ; return; } //Lleno la imformacion del nodo strcpy (nodo-> nom,c); // Procedo hacer los enlaces if (!*l) {nodo->sig=NULL; //es el primer nodo que va a ingresar a la lista *l=nodo; } } void Almacenar_ord(Lista *l, char c[]) { pnodo nodo; nodo = (pnodo) malloc (sizeof(tipoAlumno)); if (nodo==NULL) { cout<<"\n Sin espacio de memoria " ; return; } //Lleno la imformacion del nodo strcpy (nodo-> nom,c); if(!*l) { nodo->sig=*l;

Page 64: Estructura silvia

64

*l=nodo; } else { pnodo aux = *l; if(strcmp(aux->nom,c)>0) { nodo->sig=*l; *l=nodo; } else { while((aux->sig) && strcmp(aux->sig->nom,c)<0) { aux=aux->sig; } nodo->sig=aux->sig; aux->sig=nodo; } } } void almacenar_fin (Lista *l , char c[]) { pnodo nodo; nodo = (pnodo) malloc (sizeof(tipoAlumno)); if (nodo==NULL) { cout<<"\n Sin espacio de memoria " ; return; } //Lleno la imformacion del nodo strcpy (nodo-> nom,c); // Procedo hacer los enlaces

Page 65: Estructura silvia

65

if (!*l) {nodo->sig=*l; //es el primer nodo que va a ingresar a la lista *l=nodo; } else { pnodo aux =*l; while(aux->sig!=NULL) //(aux->sig) aux=aux->sig; aux->sig=nodo; nodo->sig = NULL ; } } void ver_lista(Lista l) { pnodo n=l; //nodo n toma el valor de l while (n) { cout<< "\n"<< n->nom; n=n->sig; //para q el puntero siga al otro nodo } getch(); } OPCIONES QUE DESEE

REGISTRO DE NOMBRE AL INICIO

Page 66: Estructura silvia

66

REGISTRO DE NOMBRE AL FINAL

REGISTRO ORDENADO

Page 67: Estructura silvia

67

UNIVERSIDAD TÉCNICA DE MANABÍ FACULTAD DE CIENCIAS INFORMÁTICAS

CARRERA DE INGENIERIA DE SISTEMAS INFORMÁTICOS ESTRUCTURA DE DATOS

SEGUNDO SEMESTRE Clase #9

PERIODO: Del 06 de mayo. 2013 al 24 de sept. del 2013

TIEMPO: 5 HORAS EN DOS JORNADAS DE 2 Y 3 HORAS FECHA: Lunes , 10 de JUNIO 2013 DOCENTE GUIA: Ing. Christian Torres Morán

TEMA: Lista Simple Abierta Insertar un elemento en una lista vacía

Este es, evidentemente, el caso más sencillo. Partiremos de que ya tenemos el nodo a insertar y, por supuesto un puntero que apunte a él, además el puntero a la lista valdrá NULL:

El proceso es muy simple, bastará con que:

1. nodo->siguiente apunte a NULL.

2. Lista apunte a nodo.

Insertar un elemento en la primera posición de una lista

Podemos considerar el caso anterior como un caso particular de éste, la única diferencia es que en el caso anterior la lista es una lista vacía, pero siempre podemos, y debemos considerar una lista vacía como una lista.

Page 68: Estructura silvia

68

De nuevo partiremos de un nodo a insertar, con un puntero que apunte a él, y de una lista, en este caso no vacía:

El proceso sigue siendo muy sencillo:

1. Hacemos que nodo->siguiente apunte a Lista.

2. Hacemos que Lista apunte a nodo.

Insertar un elemento en la última posición de una lista

Este es otro caso especial. Para este caso partiremos de una lista no vacía:

El proceso en este caso tampoco es excesivamente complicado:

1. Necesitamos un puntero que señale al último elemento de la lista. La manera de conseguirlo es empezar por el primero y avanzar hasta que el nodo que tenga como siguiente el valor NULL.

2. Hacer que nodo->siguiente sea NULL.

3. Hacer que ultimo->siguiente sea nodo.

Insertar un elemento a continuación de un nodo cualquiera de una lista

De nuevo podemos considerar el caso anterior como un caso particular de este. Ahora el nodo "anterior" será aquel a continuación del cual insertaremos el nuevo nodo:

Page 69: Estructura silvia

69

Suponemos que ya disponemos del nuevo nodo a insertar, apuntado por nodo, y un puntero al nodo a continuación del que lo insertaremos.

El proceso a seguir será:

1. Hacer que nodo->siguiente señale a anterior->siguiente.

2. Hacer que anterior->siguiente señale a nodo.

Localizar elementos en una lista abierta ^

Muy a menudo necesitaremos recorrer una lista, ya sea buscando un valor particular o un nodo concreto. Las listas abiertas sólo pueden recorrerse en un sentido, ya que cada nodo apunta al siguiente, pero no se puede obtener, por ejemplo, un puntero al nodo anterior desde un nodo cualquiera si no se empieza desde el principio.

Para recorrer una lista procederemos siempre del mismo modo, usaremos un puntero auxiliar como índice:

1. Asignamos al puntero índice el valor de Lista.

2. Abriremos un bucle que al menos debe tener una condición, que el índice no sea NULL.

3. Dentro del bucle asignaremos al índice el valor del nodo siguiente al índice actual.

Por ejemplo, para mostrar todos los valores de los nodos de una lista, podemos usar el siguente bucle en C:

typedef struct _nodo { int dato; struct _nodo *siguiente; } tipoNodo; typedef tipoNodo *pNodo; typedef tipoNodo *Lista; ...

Page 70: Estructura silvia

70

pNodo indice; ... indice = Lista; while(indice) { printf("%d\n", indice->dato); indice = indice->siguiente; } ...

Supongamos que sólo queremos mostrar los valores hasta que encontremos uno que sea mayor que 100, podemos sustituir el bucle por:

...

indice = Lista;

while(indice && indice->dato <= 100) { printf("%d\n", indice->dato); indice = indice->siguiente; } ...

Si analizamos la condición del bucle, tal vez encontremos un posible error: ¿Qué pasaría si ningún valor es mayor que 100, y alcancemos el final de la lista?. Podría pensarse que cuando indice sea NULL, si intentamos acceder a indice->dato se producirá un error.

En general eso será cierto, no puede accederse a punteros nulos. Pero en este caso, ese acceso está dentro de una condición y forma parte de una expresión "and". Recordemos que cuando se evalúa una expresión "and", se comienza por la izquierda, y la evaluación se abandona cuando una de las expresiones resulta falsa, de modo que la expresión "indice->dato <= 100" nunca se evaluará si indice es NULL.

Si hubiéramos escrito la condición al revés, el programa nunca funcionaría bien. Esto es algo muy importante cuando se trabaja con punteros.

Page 71: Estructura silvia

71

Eliminar el primer nodo de una lista abierta

Es el caso más simple. Partiremos de una lista con uno o más nodos, y usaremos un puntero auxiliar, nodo:

1. Hacemos que nodo apunte al primer elemento de la lista, es decir a Lista.

2. Asignamos a Lista la dirección del segundo nodo de la lista: Lista->siguiente.

3. Liberamos la memoria asignada al primer nodo, el que queremos eliminar.

Si no guardamos el puntero al primer nodo antes de actualizar Lista, después nos resultaría imposible liberar la memoria que ocupa. Si liberamos la memoria antes de actualizar Lista, perderemos el puntero al segundo nodo.

Si la lista sólo tiene un nodo, el proceso es también válido, ya que el valor de Lista->siguiente es NULL, y después de eliminar el primer nodo la lista quedará vacía, y el valor de Lista será NULL.

De hecho, el proceso que se suele usar para borrar listas completas es eliminar el primer nodo hasta que la lista esté vacía.

Eliminar un nodo cualquiera de una lista abierta

En todos los demás casos, eliminar un nodo se puede hacer siempre del mismo modo. Supongamos que tenemos una lista con al menos dos elementos, y un puntero al nodo anterior al que queremos eliminar. Y un puntero auxiliar nodo.

El proceso es parecido al del caso anterior:

1. Hacemos que nodo apunte al nodo que queremos borrar.

2. Ahora, asignamos como nodo siguiente del nodo anterior, el siguiente al que queremos eliminar: anterior->siguiente = nodo->siguiente.

3. Eliminamos la memoria asociada al nodo que queremos eliminar.

Page 72: Estructura silvia

72

UNIVERSIDAD TÉCNICA DE MANABÍ FACULTAD DE CIENCIAS INFORMÁTICAS

CARRERA DE INGENIERIA DE SISTEMAS INFORMÁTICOS ESTRUCTURA DE DATOS

SEGUNDO SEMESTRE Clase #10

PERIODO: Del 06 de mayo. 2013 al 24 de sept. del 2013

TIEMPO: 5 HORAS EN DOS JORNADAS DE 2 Y 3 HORAS FECHA: Miercoles , 12 de JUNIO 2013 DOCENTE GUIA: Ing. Christian Torres Morán

TEMA: Localizar y elimina

#include<conio.h>

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

typedef struct empleado{char nombre[30];

char apellido[30];

long int cedula;

char departamento[100];

float sueldo;

struct empleado *sig;

}

tipoempleado;

typedef tipoempleado *Lista; //tipo de dato puntero para manejar

listastypedef tipoempleado *pnodo; //tipo de dato puntero para crear

Page 73: Estructura silvia

73

nodos Ahora sumemos a nuestras funciones de ingreso ya realizadas y

modificadas las funciones prototipos para buscar y eliminar

void ingresarINI(Lista *l, char nom[],char ape[],long int ced, char

dep[],float suel);

void ingresarFIN(Lista *l, char nom[],char ape[],long int ced, char

dep[],float suel);

int verificarxcedula(Lista l, char ape[]);void buscarxdpt(Lista l, char

dep[]);

void buscarxdpt_all(Lista l, char dep[]);

void mostrar(Lista l);

void eliminar(Lista *l, char ape[]);

void eliminar_all(Lista *l);

void eliminar_nodos(Lista *l, char ape[]);

}

Proceso de modificar la funcion para evitar introducir nuevos nodos

con la misma información:

Debemos pensar en una función buscar que localice a un nodos con una

información que no se repita...pensando un poco podemos creer que la

información puede contener nombre o apellidos de igual valor.. Pero el

valor de cedula no es un dato que se repita. Si cambiamos la función

void verificarxcedula(Lista l, long int ced){pnodo aux=l;

while(aux && (aux->cedula!=ced))aux=aux->sig;

if(aux)return (1);

elsereturn (0);

}

Esta función solo generar 2 estados1.

Si existe =12.

Page 74: Estructura silvia

74

No existe =0

Al emplearlo podíamos emplear en las funciones de ingreso de la

siguiente forma: La función verificar xceula antes de crear el espacio

de memoria con malloc Observen que la funcion fue diseñada para

devolver 1 si existe y 0 en caso de no existir

void ingresarINI(Lista *l, char nom[],char ape[],long int ced, char

dep[],float suel){pnodo nodo;if (verificarxcedula(*l,ced)==1)

return;

nodo=(pnodo)malloc(sizeof(tipoempleado));//crear nodo solic. al S.O.

strcpy(nodo->nombre,nom);

strcpy(nodo->apellido,ape);

strcpy(nodo->departamento,dep);

nodo->cedula=ced;nodo->sueldo=suel;//enlaces de los nodos al

inicionodo->sig=*l;

*l=nodo;

}

PROCESO DE ELIMINACION DE NODOS

Recorrer cada nodo y en cada pasada debemos ir desplazando la

cabecera de la lista para irdesplazándola y poder tomar la dirección de

ese primer nodo<<El que se va a eliminar>> Teniendo la siguiente función:

void eliminar_all(Lista *l)

{

pnodo aux;

while(*l)

{

aux=*l;

*l=aux->sig;

Page 75: Estructura silvia

75

free(aux);

ELIMINAR UN NODO ESPECÍFICO

Asumimos eliminar nodos de un empleado

Tendríamos que localizarlo y luego destruirlo con la funcion free

void eliminar(Lista *l, char ape[])

{

pnodo nodo, aux;if (!*l)

printf("\nLista Vacia...\nImposible eliminar elementos..");

else

{

if (strcmp((*l)->apellido,ape)==0){aux=*l;

*l=aux->sig;free(aux);

printf("\nSe elimino elemento %s con exito",ape);

}

Else

{

aux=*l;

while((aux->sig)&&(strcmp(aux->sig->apellido,ape)!=0))aux=aux->sig;

if (aux->sig){nodo=aux->sig;

aux->sig=nodo->sig;

free(nodo);

printf("\nSe elimino elemento %s con exito",ape);

Page 76: Estructura silvia

76

UNIVERSIDAD TÉCNICA DE MANABÍ FACULTAD DE CIENCIAS INFORMÁTICAS

CARRERA DE INGENIERIA DE SISTEMAS INFORMÁTICOS ESTRUCTURA DE DATOS

SEGUNDO SEMESTRE Clase #11

PERIODO: Del 06 de mayo. 2013 al 24 de sept. del 2013

TIEMPO: 5 HORAS EN DOS JORNADAS DE 2 Y 3 HORAS FECHA: Lunes , 17 de JUNIO 2013 DOCENTE GUIA: Ing. Christian Torres Morán

TEMA: Ejercicio de eliminar

ELIMINAR TODOS LOS NODOS QUE COINCIDEN CON UN

CRITERIO

Podríamos usar el código de la funcion de eliminar un nodo especifico,

pero debemos procurar realizar nuestra operación hasta llegar al final

de los nodos con el fin de explorar todos los nodos

void eliminar_nodos(Lista *l, char ape[])

{

pnodo nodo, aux, tem=*l;

int c=0;

while(tem) //nuevo while{if (!*l)printf("\nLista Vacia...\nImposible

eliminar elementos..");

else

{

Page 77: Estructura silvia

77

if (strcmp((*l)->apellido,ape)==0){aux=*l;

*l=aux->sig;free(aux);

tem=*l;

c++;

}

Else

{

aux=*l;

while((aux->sig)&&(strcmp(aux->sig->apellido,ape)!=0))aux=aux->sig;

if (aux->sig)

{

nodo=aux->sig;

aux->sig=nodo->sig;

free(nodo);

tem=*l;

c++;

}

elsetem=tem->sig;

}

}

}//cierre de nuevo

whileif(c==0)

printf("\no se encontró el nodo con apellido %s",ape);

else

Page 78: Estructura silvia

78

printf("\nSe encontraron %d elementos con apellido %s y

fueron eliminados con éxito",c,ape);

}

Page 79: Estructura silvia

79

Page 80: Estructura silvia

80

Page 81: Estructura silvia

81

EJERCICIO

#include <iostream>

#include <conio.h>

using namespace std;

typedef struct nodo

{

char nombre[15];

float peso;

float talla;

int tiempo;

struct nodo *sig;

}typo_nodo;

typedef typo_nodo *lista;

typedef typo_nodo *p_nodo;

void registrar(lista *l, char nom[], float peso, float talla, int tiempo);

Page 82: Estructura silvia

82

void mostrar(lista l);

void insercion_federados(lista *lcal, lista *l);

void mostrar_calificados(lista lcal);

void eliminacion(lista *l);

void registrar(lista *l,char nom[], float peso, float talla, int tiempo)

{

p_nodo nodo, anterior = *l;

nodo = new typo_nodo;

strcpy(nodo->nombre,nom);

nodo->peso = peso;

nodo->talla = talla;

nodo->tiempo=tiempo;

if (nodo==NULL)

{

cout <<"\n SIN ESPACIO DE MEMORIA";

return ;

}

else if (!*l !=NULL || anterior->tiempo > tiempo)

{

nodo->sig=*l;

Page 83: Estructura silvia

83

*l=nodo;

}

else

{

while((anterior->sig)&& anterior->sig->tiempo < tiempo)

anterior=anterior->sig;

nodo->sig=anterior->sig;

anterior->sig=nodo;

}

cin.get();

cin.get();

system("cls");

}

void mostrar(lista l)

{

if(!l)

{

cout << "*******La lista esta vacia**********";

}

else

{

cout << "NOMBRE PESO TALLA TIEMPO" << endl;

Page 84: Estructura silvia

84

while(l)

{

cout << l->nombre << "\t\t" << l->peso << "\t\t" << l->talla << "\t\t" << l->tiempo << endl;

l = l->sig;

}

}

cin.get();

cin.get();

system("cls");

}

void insercion_federados(lista *lcal, lista *l)

{

p_nodo lista1 = *l;

for(int i = 0;i<2;i++)

{

p_nodo nodo;

nodo = new typo_nodo;

if(nodo == NULL)

{

Page 85: Estructura silvia

85

cout << "*****NO HAY SUFICIENTE MEMORIA*******";

return;

}

if(!*l) return;

strcpy(nodo->nombre,lista1->nombre);

nodo->peso = lista1->peso;

nodo->talla = lista1->talla;

nodo->tiempo = lista1->tiempo;

lista1 = lista1->sig;

nodo->sig = *lcal;

*lcal = nodo;

}

}

void mostrar_calificados(lista lcal)

{

if(!lcal)

{

cout << "*******La lista esta vacia**********";

}

else

Page 86: Estructura silvia

86

{

cout << "NOMBRE PESO TALLA TIEMPO" << endl;

while(lcal)

{

cout << lcal->nombre << "\t\t" << lcal->peso << "\t\t" << lcal->talla << "\t\t" << lcal->tiempo << endl;

lcal = lcal->sig;

}

}

cin.get();

cin.get();

system("cls");

}

void eliminacion(lista *l)

{

p_nodo aux = *l;

int i = 0;

if(!*l)return;

else

Page 87: Estructura silvia

87

{

while(i!=2)

{

aux = *l;

*l = aux->sig;

delete(aux);

i++;

}

}

system("cls");

}

int main()

{

lista l = NULL;

lista lcal = NULL;

char nombre[15], opc;

float peso;

float talla;

int tiempo;

do

{

Page 88: Estructura silvia

88

cout << "********Federacion deportiva***********" << endl;

cout << "(A) Inscribir" << endl;

cout << "(B) mostrar inscritos" << endl;

cout << "(C) Insercion de federados"<<endl;

cout << "(D) Mostrar federados" << endl;

cout << "(E) Elimincacion de los federados de la lista de inscritos" << endl;

cout << "(F) Salir " << endl;

cout << "Ingresar: ";

do

{

do

{

opc = toupper(getche());

}while(!isalpha(opc));

}while(opc<'A' || opc>'D');

switch(opc)

{

case 'A':

{

system("cls");

for(int i = 0;i<4;i++)

Page 89: Estructura silvia

89

{

cout << "*******INSCRIPCIONES*********\n\n";

cout << "Ingresar nombre: ";cin>>nombre;

cout << "Ingresar peso: ";cin >> peso;

cout << "Ingresar talla: ";cin >> talla;

cout << "Ingresar tiempo: ";cin >> tiempo;

registrar(&l,nombre,peso,talla,tiempo);

}

break;

}

case 'B':

{

system("cls");

cout << "Mostrando lista de inscritos para las olimpiadas" << endl << endl;

mostrar(l);break;

}

case 'C':

{

system("cls");

insercion_federados(&lcal,&l);

break;

}

case 'D':

{

system("cls");

Page 90: Estructura silvia

90

cout << "Mostrando lista de federados" << endl << endl;

mostrar_calificados(lcal);

break;

}

case 'E':

{

system("cls");

eliminacion(&l);

}

}

}while(opc != 'F');

return 0;

}

OPCIONES QUE DESEE