Buscar este blog

16 de enero de 2010

#include 
#include 
#include  //exit()
#include 

typedef struct _agenda {
  char nombre[20];
  char telefono[12];
  _agenda *siguiente;
  };

void mostrar_menu();
void anadir_elemento();
void mostrar_lista();


_agenda *primero, *ultimo;
/*De momento lo haremos con variables globales,
más adelante veremos como pasar punteros a funciones*/

void main() {
char opcion;

primero = (_agenda *) NULL;
ultimo = (_agenda *) NULL;
do {
   mostrar_menu();
   opcion = getch();
   switch ( opcion ) {
      case '1': anadir_elemento();
      break;
      case '2':  printf("Ir pensando como hacer esto :D\n");
      break;
      case '3': mostrar_lista();
      break;
      case '4': exit( 1 );
      default: printf( "Opción no válida\n" );
      break;
      }
   } while (opcion!='4');
}


void mostrar_menu() {
printf("\n\nMenú:\n=====\n\n");
printf("1.- Añadir elementos\n");
printf("2.- Borrar elementos\n");
printf("3.- Mostrar lista\n");
printf("4.- Salir\n\n");
printf("Escoge una opción: ");fflush(stdin);
}

/* Con esta función añadimos un elemento al final de la lista */
void anadir_elemento() {
_agenda *nuevo;
/* reservamos memoria para el nuevo elemento */
nuevo = (_agenda *) malloc (sizeof(_agenda));
if (nuevo==NULL) printf( "No hay memoria disponible!\n");
else {
   printf("\nNuevo elemento:\n");
   printf("Nombre: "); fflush(stdin);
   gets(nuevo->nombre);
   printf("Teléfono: "); fflush(stdin);
   gets(nuevo->telefono);
/* el campo siguiente va a ser NULL por ser el último elemento
 la lista */
   nuevo->siguiente = NULL;
/* ahora metemos el nuevo elemento en la lista. lo situamos
al final de la lista */
/* comprobamos si l0a lista está vacía. si primero==NULL es que no
hay ningún elemento en la lista. también 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() {
_agenda *auxiliar; /* lo usamos para recorrer la lista */
int i;
i=0;
auxiliar = primero;
printf("\nMostrando la lista completa:\n");
while (auxiliar!=NULL) {
   printf( "Nombre: %s, Teléfono: %s\n", 
   auxiliar->nombre,auxiliar->telefono);
   auxiliar = auxiliar->siguiente;
   i++;
   }
if (i==0) printf( "\nLa lista está vacía!!\n" );
}

No hay comentarios:

Publicar un comentario