You are on page 1of 3

1) Realizar un algoritmo con listas enlazadas que permita mostrar los datos de tres personas, esto incluye: nombre,

direccin y la edad de la persona y luego que elimine el ltimo dato o informacin. #include <stdio.h> #include <stdlib.h> struct f { /* Estos son los datos que guardamos: */ char nombre[30]; /* Nombre, hasta 30 letras */ char direccion[50]; /* Direccion, hasta 50 */ int edad; /* Edad, un numero */ struct f* siguiente; /* Y direccion de la siguiente */ }; struct f *dato1; /* Va a ser un puntero a ficha */ struct f *dato2; /* Otro puntero a ficha */ struct f *dato3; /* Y otro mas */ void MuestraLista ( struct f *inicial ) { if (inicial!=NULL) { /* Si realmente hay lista */ printf("Nombre: %s\n", inicial->nombre); printf("Direccion: %s\n", inicial->direccion); printf("Edad: %d\n\n", inicial->edad); MuestraLista ( inicial->siguiente ); /* Y mira el siguiente */ } } int main() { dato1 = (struct f*) malloc (sizeof(struct f)); /* Reservamos memoria */ strcpy(dato1->nombre, "Carlos"); /* Guardamos el nombre, */ strcpy(dato1->direccion, "La victoria"); /* guardamos la direccion */ dato1->edad = 40; /* la edad */ dato1->siguiente = NULL; /* y no hay ninguna mas */ dato2 = (struct f*) malloc (sizeof(struct f)); /* Reservamos memoria */ strcpy(dato2->nombre, "Juan"); /* Guardamos el nombre, */ strcpy(dato2->direccion, "Cagua"); /* guardamos la direccion */ dato2->edad = 35; /* la edad */ dato2->siguiente = NULL; /* y no hay ninguna mas */ dato1->siguiente = dato2; /* Enlazamos anterior con ella */ dato3 = (struct f*) malloc (sizeof(struct f)); /* La tercera */ strcpy(dato3->nombre, "Ana"); strcpy(dato3->direccion, "Maracay"); dato3->edad = 14; dato3->siguiente = dato2; /* enlazamos con la siguiente */ dato1->siguiente = dato3; /* y la anterior con ella */ printf("La lista inicialmente es:\n"); MuestraLista (dato1); dato1->siguiente = dato2; /* Borrar dato3: Enlaza Dato1 y Dato2 */ free(dato3); /* Libera lo que ocupa Dato3 */ printf("Y tras borrar el datos numero tres:\n\n"); MuestraLista (dato1); getch(); return 0;

} 2)Realizar un algoritmo con listas enlazadas que permita crear agenda telefnica. #include <stdio.h> struct _agenda { char nombre[20]; char telefono[12]; struct _agenda *siguiente; }; struct _agenda *primero, *ultimo; void mostrar_menu() { printf("\n\n========Menu:=========\n\n"); printf("1.- Aadir elementos\n"); printf("2.- Mostrar lista\n"); printf("3.- Salir\n\n"); printf("Escoge una opcion: "); } /* Con esta funcin aadimos un elemento al final de la lista */ void anadir_elemento() { struct _agenda *nuevo; clrscr(); /* reservamos memoria para el nuevo elemento */ nuevo = (struct _agenda *) malloc (sizeof(struct _agenda)); if (nuevo==NULL) printf( "No hay memoria disponible!\n"); printf("\n Nuevo elemento:\n"); printf("Nombre: "); gets(nuevo->nombre); printf("Telefono: "); gets(nuevo->telefono); /* el campo siguiente va a ser NULL por ser el ltimo elemento de la lista */ nuevo->siguiente = NULL; /* ahora metemos el nuevo elemento en la lista. lo situamos al final de la lista */ /* Comprobamos si la lista esta vaca. si primero==NULL es que no hay ningn elemento en la lista. Tambin vale ultimo==NULL */ if (primero==NULL) { printf( "Primer elemento\n"); primero = nuevo; ultimo = nuevo; } else { /* el que hasta ahora era el ltimo tiene que apuntar al nuevo */ ultimo->siguiente = nuevo; /* hacemos que el nuevo sea ahora el ltimo */ ultimo = nuevo; } } void mostrar_lista() {

struct _agenda *auxiliar; /*lo usamos para recorrer la lista */ int i; i=0; auxiliar = primero; printf("\n\n ***Mostrando la lista completa***:\n\n"); while (auxiliar !=NULL){ printf( "Nombre: %s, Telfono: %s \n\n", auxiliar->nombre,auxiliar->telefono); auxiliar = auxiliar->siguiente; i++; } } int main() { char opcion; primero = (struct _agenda *) NULL; ultimo = (struct _agenda *) NULL; clrscr(); do { mostrar_menu(); opcion = getch(); switch ( opcion ) { case '1': anadir_elemento(); break; case '2': mostrar_lista(primero); break; case '3': exit( 1 ); default: printf( "Opcin no valida\n" ); break; } } while (opcion!='3'); getch(); return 0; }