c++ listas enlazadas

Download C++ Listas enlazadas

Post on 13-Jun-2015

530 views

Category:

Education

2 download

Embed Size (px)

DESCRIPTION

Ejercicio desarrollado en C++ (Programación estructurada) donde se ejemplifican las listas enlazadas.

TRANSCRIPT

  • 1. TitulodelDocumento Versin Fecha AgendaconListasEnlazadas 1.0 Marzo2014 UniversidaddelValledeMxicoCampusRoma Profesor:FranciscoNazario 2 Contenido

2. TitulodelDocumento Versin Fecha AgendaconListasEnlazadas 1.0 Marzo2014 UniversidaddelValledeMxicoCampusRoma Profesor:FranciscoNazario 3 Introduccin El manejo de apuntadores en el lenguaje C++ nos permite agilizar el procesamiento de los datos en las distintas operaciones que se van dando durante la ejecucin del programa, de igual forma nos permite relacionar o reasignar valores a una variable sin que sea necesario referirnos al nombre de la misma como se ha sealado en cursos anteriores de programacin, si sumamos a los apuntadores estructuras de datos y objetos de las mismas tenemos un importante ahorro de cdigo lo que facilita el entendimiento de las lneas de cdigo y el cmo viajan los datos durante la ejecucin, vista la reutilizacin de cdigo como una de las mejores prcticas podemos realizar ms con menos y as disminuir el tiempo que utilizamos del procesador para realizar las operaciones. Las direcciones de memoria juegan un papel de suma importancia ya que mediante estas es como realmente se agiliza el manejo de los datos que contienen dichas direcciones de memoria, siendo de mucha ayuda cuando deseamos que el procesador optimice tiempos de ejecucin y atencin de procesos/operaciones. 3. TitulodelDocumento Versin Fecha AgendaconListasEnlazadas 1.0 Marzo2014 UniversidaddelValledeMxicoCampusRoma Profesor:FranciscoNazario 4 Objetivo Mostrar al lector el uso y manejo de apuntadores para controlar el flujo de informacin durante la ejecucin de la aplicacin para una eficiente administracin de memoria RAM, lo que deriva en un control y un manejo transparente de los valores, operaciones y resultados que arroja, la declaracin, inclusin y los modificadores de las funciones conocidas para incluir la referencia a los apuntadores y contenedores a los que apuntan este tipo de elementos tan recurrentes. 4. TitulodelDocumento Versin Fecha AgendaconListasEnlazadas 1.0 Marzo2014 UniversidaddelValledeMxicoCampusRoma Profesor:FranciscoNazario 5 Desarrollo 5. TitulodelDocumento Versin Fecha AgendaconListasEnlazadas 1.0 Marzo2014 UniversidaddelValledeMxicoCampusRoma Profesor:FranciscoNazario 6 Al iniciar la ejecucin de la aplicacin muestra un men de opciones para el usuario, permitiendo elegir entre cuatro opciones: Alta de registro en la agenda Eliminar elemento de la agenda Mostrar elementos de la agenda Salir de la aplicacin El usuario debe ingresar el nmero correspondiente a la opcin deseada. 6. TitulodelDocumento Versin Fecha AgendaconListasEnlazadas 1.0 Marzo2014 UniversidaddelValledeMxicoCampusRoma Profesor:FranciscoNazario 7 Si el usuario ingresa un nmero que no corresponde a las opciones el programa le notifica mediante un mensaje en pantalla indicando que puede intentar el ingreso de algn nmero que corresponda a alguna de las opciones del men: Este mensaje es constante mientras el usuario no ingrese una opcin vlida del men, un punto de seguridad contemplando el correcto manejo de la informacin y evitando basura en el programa. 7. TitulodelDocumento Versin Fecha AgendaconListasEnlazadas 1.0 Marzo2014 UniversidaddelValledeMxicoCampusRoma Profesor:FranciscoNazario 8 Opcin 1: Ingresar registro a la agenda Al ingresar el nmero 1 en el men del programa, limpia la pantalla y comienza a solicitar informacin al usuario la cual ser asignada al nuevo registro de la agenda, los valores a ingresar son: Nombre Apellido Paterno Apellido Materno Fecha de nacimiento a 8 posiciones, dos para el da, dos para el mes y las ltimas cuatro correspondientes al ao Nmero telefnico a 10 posiciones 8. TitulodelDocumento Versin Fecha AgendaconListasEnlazadas 1.0 Marzo2014 UniversidaddelValledeMxicoCampusRoma Profesor:FranciscoNazario 9 Dentro de las validaciones al ingresar un registro se considera lo siguiente: 1. Los datos se organizan alfabticamente al ser ingresados. 2. Los registros tienen como control para el ordenamiento el Apellido Paterno. 3. Los datos tipo CHAR se almacenan en maysculas para el correcto manejo de la informacin Una vez ingresados los datos del registro la aplicacin regresa al men inicial limpiando la pantalla previamente. 9. TitulodelDocumento Versin Fecha AgendaconListasEnlazadas 1.0 Marzo2014 UniversidaddelValledeMxicoCampusRoma Profesor:FranciscoNazario 10 Opcin 2: Eliminar un elemento de la agenda Al ingresar el nmero 2 en el men del programa, solicita al usuario el texto referente al apellido paterno que se desea eliminar: 10. TitulodelDocumento Versin Fecha AgendaconListasEnlazadas 1.0 Marzo2014 UniversidaddelValledeMxicoCampusRoma Profesor:FranciscoNazario 11 El texto debe ser igual al registrado, la aplicacin no valida mayscula de minsculas ya que el dato capturado se convierte a maysculas y as se realiza la bsqueda del valor, en caso de ser encontrado el dato procede con el borrado de dicho registro y notifica al usuario mediante un mensaje en pantalla. 11. TitulodelDocumento Versin Fecha AgendaconListasEnlazadas 1.0 Marzo2014 UniversidaddelValledeMxicoCampusRoma Profesor:FranciscoNazario 12 En caso de no encontrarse el dato en la agenda se le notifica al usuario y se le insta a continuar con la ejecucin al presionar una tecla: Solo es requerido que el usuario presione una tecla para continuar con la ejecucin del programa. 12. TitulodelDocumento Versin Fecha AgendaconListasEnlazadas 1.0 Marzo2014 UniversidaddelValledeMxicoCampusRoma Profesor:FranciscoNazario 13 Opcin 3: Listar los registros de la agenda Para listar los registros debemos teclear el nmero 3 en el men principal, la pantalla resultante nos muestra los elementos actuales de la agenda: 13. TitulodelDocumento Versin Fecha AgendaconListasEnlazadas 1.0 Marzo2014 UniversidaddelValledeMxicoCampusRoma Profesor:FranciscoNazario 14 Ingrese la siguiente informacin: Nombre: Jose Apellido P: Guerrero Apellido M: Piesich Fecha de Nac: 11 de Mayo de 1970 Telfono: 4738192034 Nombre: Erika Apellido P: Zamora Apellido M: Calderon Fecha de Nac: 23 Septiembre de 2011 Telfono: 8299375560 Muestre la informacin de la agenda con las adiciones. Elimine el registro del Apellido ZAMORA Muestre el listado de los elementos actuales de la agenda. 14. TitulodelDocumento Versin Fecha AgendaconListasEnlazadas 1.0 Marzo2014 UniversidaddelValledeMxicoCampusRoma Profesor:FranciscoNazario 15 Ingresar la informacin. 15. TitulodelDocumento Versin Fecha AgendaconListasEnlazadas 1.0 Marzo2014 UniversidaddelValledeMxicoCampusRoma Profesor:FranciscoNazario 16 Mostrar la agenda con los elementos nuevos. 16. TitulodelDocumento Versin Fecha AgendaconListasEnlazadas 1.0 Marzo2014 UniversidaddelValledeMxicoCampusRoma Profesor:FranciscoNazario 17 Eliminar el registro de apellido Zamora. 17. TitulodelDocumento Versin Fecha AgendaconListasEnlazadas 1.0 Marzo2014 UniversidaddelValledeMxicoCampusRoma Profesor:FranciscoNazario 18 Enlistar los elementos actuales de la agenda. 18. TitulodelDocumento Versin Fecha AgendaconListasEnlazadas 1.0 Marzo2014 UniversidaddelValledeMxicoCampusRoma Profesor:FranciscoNazario 19 #include #include #include #include #include int opc, fnac, tel; char nombre[20], apat[20], amat[20]; typedef struct nodo { char Nombre[20]; char Apat[20]; char Amat[20]; int Fnac; int Tel; struct nodo *siguiente; } tipoNodo; typedef tipoNodo *pNodo; 19. TitulodelDocumento Versin Fecha AgendaconListasEnlazadas 1.0 Marzo2014 UniversidaddelValledeMxicoCampusRoma Profesor:FranciscoNazario 20 typedef tipoNodo *Lista; Lista lista = NULL; void Mayus(char s[]) { int j; for (j=0; j < strlen(s); j++) s[j]=toupper(s[j]); } void agregar() { pNodo nuevo, anterior; nuevo = (pNodo)malloc(sizeof(tipoNodo)); system("cls"); printf("Ingresa el nombre: "); scanf("%s", &nombre); Mayus(nombre); strcpy(nuevo->Nombre,nombre); printf("nIngresa el apellido Paterno: "); scanf("%s",&apat); Mayus(apat); 20. TitulodelDocumento Versin Fecha AgendaconListasEnlazadas 1.0 Marzo2014 UniversidaddelValledeMxicoCampusRoma Profesor:FranciscoNazario 21 strcpy(nuevo->Apat,apat); printf("nIngresa el apellido Materno: "); scanf("%s", &amat); Mayus(amat); strcpy(nuevo->Amat,amat); printf("nIngresa la fecha de nacimiento nej.: 13012014 = 13 de enero de 2014.: "); scanf("%d", &fnac); nuevo->Fnac = fnac; printf("nIngresa el tel%cfono de contacto a 10 d%cgitos: ", 130, 161); scanf("%d", &tel); nuevo->Tel = tel; //Ordenamiento para cada conjunto de datos que se ingresan if(lista==NULL || strcmp(lista->Apat,nuevo->Apat) > 0) { nuevo->siguiente = lista; lista = nuevo; } else { anterior = lista; while(anterior->siguiente!=NULL && strcmp(anterior->siguiente->Apat,nuevo->Apat) siguiente; 21. TitulodelDocumento Versin Fecha AgendaconListasEnlazadas 1.0 Marzo2014 UniversidaddelValledeMxicoCampusRoma Profesor:FranciscoNazario 22 } nuevo->siguiente = anterior->siguiente; anterior->siguiente = nuevo; } } void elimina() { char apser[20]; pNodo reco, ante; reco = lista; ante = NULL; if(reco == NULL) { printf("Lista vac%ca...", 161); getch(); } else { printf("nIngresa el Apellido paterno que deseas eliminar: "); scanf("%s", &apser); Mayus(apser); 22. TitulodelDocumento Versin Fecha AgendaconListasEnlazadas 1.0 Marzo2014 UniversidaddelValledeMxicoCampusRoma Profesor:FranciscoNazario 23 while(reco != NULL && strcmp(reco->Apat,apser) < 0) { ante = reco; reco = reco->siguiente; } if(reco == NULL || strcmp(reco->Apat,apser) != 0) { printf("nNo se encontr%c valor"); getch(); return; } else { if(ante == NULL) { lista = reco->siguiente; } else ante->siguiente = reco->siguiente; free(reco); printf("Registro eliminado, presiona una tecla para continuar..."); getch(); } }

Recommended

View more >